別のドロップダウンの項目が選択されたときに入力したいドロップダウンがあります。両方のドロップダウンは、コントローラーから渡されたデータ/モデルに関連付けられています。最初のドロップダウンは、モデル内の関数を呼び出すことによって DB から取り込まれます。フォームはこちら
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());
以下は、Ajax によって呼び出されるアクション user/getunits です。
$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);
}
最初のドロップダウンを選択すると、「未定義のインデックス: スーパーユニット」というエラーが表示され続けます。また、最初のドロップダウンに form->dropDownListRow を使用し、2 番目に CHtml::dropDownList を使用していることに気付くかもしれません。これは、ドロップダウンにajaxが正しく入力され、モデルに適切にバインドされることを正確に確認する方法の構文について、私が無知であるためです。