다른 드롭 다운의 항목이 선택 될 때 채울 드롭 다운이 있습니다. 두 드롭 다운 모두 컨트롤러에서 전달 된 데이터/모델에 연결됩니다. 첫 번째 드롭 다운은 모델에서 함수를 호출하여 DB에서 채워집니다. 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());
다음은 Ajax에서 호출 한 사용자/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);
}
첫 번째 드롭 다운을 선택하면 "정의되지 않은 색인 : 수퍼 유니트"오류가 계속 표시됩니다. 또한 두 번째로 CHtml :: dropDownList를 사용하는 동안 첫 번째 드롭 다운에 form -> dropDownListRow를 사용하고 있습니다. 그 이유는 드롭 다운이 아약스로 올바르게 채워지는지, 그리고 모델에 적절하게 바인딩되어 있는지 정확하게 구별하는 방법에 대한 구문이 뚜렷하지 않기 때문입니다. 당신이 당신의 서버 측
변경에 $_POST['MyModelName']['superunit']
을 얻을 것이다 당신은 왜 $form->dropDownListRow
를 사용
감사합니다. 그것은 효과가 있었다. – redGREENblue
다시 불편을 드려서 죄송합니다. 이 코드는 생성시 잘 작동합니다. 업데이트 조치가 작동하지 않습니다. 'get_class()는 매개 변수 1이 객체, 배열 given'.If 나는 드롭 다운을 제거하면 에러가 발생하지 않습니다'라는 오류가 계속 발생합니다. 무엇이 문제 일 수 있습니까? – redGREENblue
1. 최신 Yii가 있는지 확인하십시오 (github에서 가져 오기). 2. 두 번째 드롭 다운을 토글 (켜기/끄기)하여 디버그를 시도하십시오. 3. Yii가 제공 한 스택 추적 (프레임 워크 코드 파기)을 따라 디버깅을 시도합니다. 4. Yii stack trace의 스크린 샷을 제공하십시오. – Pave