@drunken_ikarus

Как в Yii2 правильно сохранять динамически созданные поля формы?

Здравствуйте, изучаю yi2, столкнулся с простой казалось бы задачей - создавать поля формы на стороне пользователя.
Форма заказа, где помимо прочего есть таблица продуктов, где по нажатию кнопки должна добавляться строка с новым продуктом, где содержаться несколько полей.
Строку в форму добавляю следующим кодом в представлении:

<?php
$add_product = "var product_row = Number(" . $product_row++ . ");"; 
$add_product .= "$('#add-product').on('click', function(e) {
    e.preventDefault();
        var html = '';
	html += '<div class=\"row product-item flex-form pb-2\"><div class=\"col-5 field-form-select-prod required\">';
	html += '<select id=\"form-select-prod\" class=\"form-select\" name=\"OrderProduct['+product_row+'][product_id]\" aria-required=\"true\">';
	html += '<option value=\"\">--Не выбрано--</option>';
        ";
foreach ($products as $product_id => $product_name) {
    $add_product .= "html += '<option value=\"" . $product_id . "\">" . $product_name . "</option>';";
}
$add_product .= "html += '</select><div class=\"invalid-feedback \"></div>';
	html += '</div>';

//// плюс еще несколько полей

	$('.order-products').append(html);
        product_row++;";

$add_product .= "});";

$this->registerJs(
        $add_product,
        View::POS_END
);
?>


контроллер

public function actionCreate() {
        ........
        $model_product = [new OrderProduct()];

        if ($this->request->isPost) {

//корректно ли делать вот так:
            foreach($this->request->post('OrderProduct') as $k => $order_product){
                if(!isset($model_product[$k])){
                    $model_product[] = new OrderProduct();
                }
            }

            if (Model::loadMultiple($model_product, $this->request->post())) {
                foreach ($model_product as $order_product) {
                        $order_product->save(false);
                    }
            }
        }
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 1
tomclancys
@tomclancys
В модели формы поле OrderProduct создали?
Правила валидации для OrderProduct создали?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы