Yii заполнить выпадающий на выбор другого
У меня есть раскрывающийся список, который я хочу заполнить, когда выбран элемент в другом раскрывающемся списке. Оба раскрывающихся списка привязаны к данным / модели, передаваемым из контроллера. и первый выпадающий список заполняется из БД путем вызова функции в модели. Вот форма,
echo $form->dropDownListRow($modelunit,
'superunit',
$model->getSunits(),
array(
'ajax' => array(
'type'=>'POST',
'url'=>CController::createUrl('user/getunits'),
'update'=>'#unit_id',
)));
echo CHtml::dropDownList('unit_id','', array());
Вот действие пользователя /getunits, вызываемое Ajax.
$data=Unit::model()->findAll('sid=:sid',
array(':sid'=>(int) $_POST['superunit']));
$data=CHtml::listData($data,'id','name');
foreach($data as $value=>$name)
{
echo CHtml::tag('option',
array('value'=>$value),CHtml::encode($name),true);
}
Я получаю сообщение об ошибке "Неопределенный индекс: superunit" при выборе первого раскрывающегося списка. Кроме того, вы можете заметить, что я использую form->dropDownListRow для первого раскрывающегося списка при использовании CHtml::dropDownList для второго. Это потому, что я понятия не имею о том, как точно убедиться, что выпадающий список правильно заполнен ajax, а также правильно привязан к модели.
1 ответ
Ты используешь $form->dropDownListRow
вот почему вы получите $_POST['MyModelName']['superunit']
на вашей стороне сервера
Измените свой код как
$data=Unit::model()->findAll('sid=:sid',
array(':sid'=>(int) $_POST['MyModelName']['superunit']));
куда MyModelName
это модель, которую вы используете)
Или как
echo CHtml::dropDownList('superunit'.....
Для других - эта вики может помочь.