В Yii Framework есть несколько способов сохранить данные из формы, созданной с использованием repeater. Рассмотрим один из таких способов.
Предположим, у нас есть форма с полями, которые повторяются блоками (repeater). Например, мы создаем форму для добавления контактов в адресную книгу, где каждый контакт имеет поля "Имя", "Email" и "Телефон". Пользователь может добавлять несколько контактов, нажимая на кнопку "Добавить контакт". Когда пользователь заполняет форму и отправляет ее, мы должны сохранить данные каждого контакта в базе данных.
Для начала, нужно убедиться, что в форме передается массив данных, а не только одно значение для каждого поля. Например, для полей "Имя", "Email" и "Телефон" должен быть создан массив с индексами по порядку контактных блоков. Мы можем использовать имена полей в формате "contacts[0][name]", "contacts[0][email]", и т.д.
Далее, в контроллере Yii, который обрабатывает эту форму, мы можем получить данные каждого контакта, используя метод getRequestParams(), который возвращает все параметры запроса в виде ассоциативного массива. Например:
public function actionSaveContacts() { $contacts = Yii::$app->request->getBodyParams()['contacts']; // получаем данные контактов foreach ($contacts as $contact) { // сохраняем данные каждого контакта в базе данных $model = new Contact(); // предполагается, что у нас есть модель Contact для работы с данными контакта $model->name = $contact['name']; $model->email = $contact['email']; $model->phone = $contact['phone']; $model->save(); } // дополнительные действия после сохранения контактов }
В этом примере мы получаем данные контактов из запроса и затем проходимся по каждому контакту, сохраняя его данные в базе данных.
Важно помнить, что в приведенном коде мы предполагаем, что у нас уже есть модель Contact, которая представляет собой таблицу в базе данных для хранения контактов. Также мы предполагаем, что метод actionSaveContacts() связан с контроллером, отвечающим за обработку данной формы.
В зависимости от конкретных требований вашего проекта, вам может потребоваться внести дополнительные изменения в этот пример. Например, вы можете использовать валидацию данных перед их сохранением, обрабатывать ошибки при сохранении и т.д.