У меня есть раскрывающийся список, который я хочу заполнить, когда выбран элемент в другом выпадающем списке. Оба выпадающих привязаны к данным/модели, переданным с контроллера. и первое выпадающее меню заполняется из БД, вызывая функцию в модели. Heres 'форма,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 и также правильно привязано к модели.
Спасибо. Это сработало. – redGREENblue
Извините, что беспокою вас снова. Этот код отлично подходит для создания. Действие обновления не работает. Я продолжаю получать ошибку 'get_class() ожидает, что параметр 1 будет объектом, массив задан. Если я удаляю выпадающие списки, ошибок нет. В чем может быть проблема? – redGREENblue
1. Убедитесь, что у вас есть последний Yii (возьмите его из github). 2. Попробуйте отладить путем переключения (включения/выключения) второго выпадающего списка. 3. Попробуйте выполнить отладку, следуя трассировке стека, предоставленной Yii (вставьте код рамки). 4. Попробуйте предоставить скриншот трассировки стека Yii. – Pave