Одинаковые поля формы.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
vv-off
Сообщения: 56
Зарегистрирован: 2018.01.12, 11:49

Одинаковые поля формы.

Сообщение vv-off »

Здравствуйте!
Есть список сущностей которые нужно редактировать в форме.
Создаю DataProvider, передаю его во view.
Во view отображаю через ListView.
В каждом item ListView есть поля формы, они получаются одинаковыми, так как item-в несколько.
Подскажите пожалуйста как можно сохранить и валидировать их?
vv-off
Сообщения: 56
Зарегистрирован: 2018.01.12, 11:49

Re: Одинаковые поля формы.

Сообщение vv-off »

Реализовал вот так:

Код: Выделить всё

if (Yii::$app->request->post()) {
            $request = Yii::$app->request->post();
            foreach ($request['NameForm'] as $item) {
                
                foreach ($item as $attr => $value) {
                    $productForm->$attr = $value;
                }
                
                if ($productForm->validate()) {
                   //сохраняем
                }
                
            }
        }
Но не уверен, может есть более интересные способы.
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Одинаковые поля формы.

Сообщение skynin »

vv-off писал(а): 2020.07.17, 17:20 Реализовал вот так:

Код: Выделить всё

if (Yii::$app->request->post()) {
            $request = Yii::$app->request->post();
            foreach ($request['NameForm'] as $item) {
                
                foreach ($item as $attr => $value) {
                    $productForm->$attr = $value;
                }
                
                if ($productForm->validate()) {
                   //сохраняем
                }
                
            }
        }
Но не уверен, может есть более интересные способы.
воспользуйтесь Gii генератором, чтобы посмотреть как правильно

Он сделает как-то так:

Код: Выделить всё


if ($productForm->load(Yii::$app->request->post()) && $productForm->save())  {
// успешно сохранили
// redirect на продолжение список сущностей, или на просмотр
}

// redirect на продолжение редактирования
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
Ответить