Замена поля формы через Ajax

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
aleksandr.chirkov
Сообщения: 9
Зарегистрирован: 2019.02.24, 13:31

Замена поля формы через Ajax

Сообщение aleksandr.chirkov » 2019.06.23, 13:21

Добрый день, уважаемые форумчане. Есть 2 dropdownlist.

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

<td class="subjectChanging">
	<?= $editForm->field($item,'subject_id')
                             ->dropDownList(['Предметы' => $subjects],
                                                     ['id' => $item->id ,'value' => $item->subject_id])
                              ->label(false); ?>
</td>
<td class="groupsChanging<?= $item->id ?>">
              <?= $editForm->field($item,'group_id')
                                   ->dropDownList(['' => 'Не назначена','Группы' => Groups::getGroupsForCurrentSubject($item->subject_id)],
                                                           ['value' => $item->group_id])
                                   ->label(false); ?>
</td>
Есть у меня js в котором событие onchange. По этому событию я беру значение предмета из первого dropdownList и в соответствии с ним
хочу вывести как бы новый список через Ajax

после onchange запрос попадает в этот контроллер, который по Ajax выводит кусок кода

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

	public function actionChangeGroupsForSubjects() {
        	$subject_id = Yii::$app->request->post('subject_id');
        	$div_id = Yii::$app->request->post('div_id');

        return $this->renderAjax('_groupsChanging',compact('subject_id','div_id'));
    }
кусок кода из себя представляет вот что:

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

<?php

use backend\models\Pupils\Groups;
use yii\helpers\Html;

?>

<td style="padding-top:0px; padding-bottom:15px;" class="groupsChanging<?= $div_id ?>">
    <?= Html::dropDownList('HometaskTest["group_id"]',
                        ['' => 'Не назначена','Группы' => Groups::getGroupsForCurrentSubject($subject_id)],
                        ['class' => 'form-control']) ?>
</td>
То есть, я как бы заменил один dropdownlist из ActiveForm на свой сгенерированный с помощью HTML хелпера, но!
Я подставил html хелперу, такой же name который был у ActiveForm поля, я рассчитывал, что при нажатии на submit в массиве POST, я увижу этот Name в массиве POST, но получается так, что кнопка submit мой новый список не обрабатывает, может ли кто-то подсказать, почему так происходит и какое решение в связи с этим можно придумать?


Ответить