много форм на одной странице

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
iamguruman
Сообщения: 237
Зарегистрирован: 2018.05.10, 08:26

много форм на одной странице

Сообщение iamguruman »

делаю таблицу-прайс-лист https://prnt.sc/qus70h :roll:

результат кода интересно выглядит: https://prnt.sc/qus6se :D :lol:

а как такое починить?... что-то не соображу никак... :ugeek:

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

 $i=0;
        /** @var Nomenclature $nom */
        foreach ($nomss as $nom){

            $pricee = $nom->retailPrice->price ?? 0;

            if(CartItem::findOne(['nomenclature_id' => $nom->nomenclature_id])->quantity ?? null){
                $already = "!";
            } else {
                $already = "";
            }


            $cartItem = new CartItem();

            $form[$i] = ActiveForm::begin([
                'action' => ['/cart/add/', 'item_id' => $nom->id],
                'id' => $nom->id,
            ]);

            $ret.=  "<tr valign='top'>";
            $ret.= $form[$i]->field($cartItem, 'redirect')->hiddenInput(['value' => $_SERVER['REQUEST_URI']])->label(false, ['style'=>'display:none']);
            $ret.=  "
                    <td>{$nom['id']}</td>
                    <td><a href='/item/?item_id={$nom->id}'>{$nom->erpNomenclature->name}</a></td>
                    <td>{$pricee}</td>
                    <td>".$form[$i]->field($cartItem, 'quantity')->label('')->hint('')."</td>
                    <td>{$already}</td>
                    <td><input disabled></td>
                    <td>".Html::submitButton('+', [
                        'class' => 'btn btn-success',
                        'name' => "accept[{$nom->id}]",
                        ])."</td>
                ";
            $ret.=  "</tr>";

            ActiveForm::end();

            $i++;
        }

        $ret.=  "</table><br><br><br>";
        
        return $ret;
iamguruman
Сообщения: 237
Зарегистрирован: 2018.05.10, 08:26

Re: много форм на одной странице

Сообщение iamguruman »

если честно... я ожидал что все формы добавятся поочереди... вместе со строками таблицы

а получилось строки таблицы отдельно... формы отдельно

https://prnt.sc/qus9xy
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: много форм на одной странице

Сообщение unknownby »

iamguruman писал(а): 2020.01.30, 02:18 если честно... я ожидал что все формы добавятся поочереди... вместе со строками таблицы

а получилось строки таблицы отдельно... формы отдельно

https://prnt.sc/qus9xy
У тебя же написано в коде.
Выводить форму каждый раз в foreach, при этом строки формы выходят за foreach и выходят сюда $ret
Может стоит посмотреть GridView или ListView для отображения данных? Сформировав запрос правильно в модели поиска и передав dataProvider можно получить примерно такое http://prntscr.com/quvmjz используя GridView :D
Если исправить твоё, то не пихай всё в $ret, а выводи сразу в foreach через тот же echo для html
Аватара пользователя
Шлфк
Сообщения: 21
Зарегистрирован: 2018.04.25, 12:17
Откуда: СССР

Re: много форм на одной странице

Сообщение Шлфк »

А зачем на каждую строку прайса делать отдельную form? Или я чего-то не понимаю?
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: много форм на одной странице

Сообщение unknownby »

Шлфк писал(а): 2020.01.30, 09:14 А зачем на каждую строку прайса делать отдельную form? Или я чего-то не понимаю?
У каждого свой способ программировать :D
Я предложил ему GridView, пусть подумает.
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: много форм на одной странице

Сообщение yiiliveext »

Умники, вас спросили как это починить, а не как лучше ;)
Покажите свою грамотность, укажите тс на его ошибку (она там есть и довольно тривиальна).
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: много форм на одной странице

Сообщение unknownby »

Починил? :ugeek: :D

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

$ret. = $form[$i] = ActiveForm::begin([
		'action' => ['/cart/add/', 'item_id' => $nom->id],
		'id' => $nom->id,
	]);

$ret. = ActiveForm::end();
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: много форм на одной странице

Сообщение yiiliveext »

unknownby писал(а): 2020.01.30, 10:58 Починил? :ugeek: :D
:shock: :shock: :shock:
Нет.
Семь строк надо изменить и одну удалить удалить ;)
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: много форм на одной странице

Сообщение unknownby »

yiiliveext писал(а): 2020.01.30, 11:03
unknownby писал(а): 2020.01.30, 10:58 Починил? :ugeek: :D
:shock: :shock: :shock:
Нет.
Семь строк надо изменить и одну удалить удалить ;)
Ну так в его задаче же написано "все формы добавятся поочереди... вместе со строками таблицы", по сути оно и выдаст ему все формы и внутри каждой формы будет информация. Я предложил выше еще вариант.
Можно либо пихать в переменную и потом выводить эту переменную, что не очень хорошо по моему. Второй вариант выше, что переделать пихание инфы в $ret и сделать сразу отображение информации.
Ответить