2013-09-21 3 views
0

다른 드롭 다운의 항목이 선택 될 때 채울 드롭 다운이 있습니다. 두 드롭 다운 모두 컨트롤러에서 전달 된 데이터/모델에 연결됩니다. 첫 번째 드롭 다운은 모델에서 함수를 호출하여 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를 사용

답변

3

은 당신이 MyModelName

또는

같은 사용 모델)입니다

$data=Unit::model()->findAll('sid=:sid', 
         array(':sid'=>(int) $_POST['MyModelName']['superunit'])); 

과 같은 코드입니다

echo CHtml::dropDownList('superunit'..... 

다른 사람의 경우 - this 위키가 도움이 될 수 있습니다.

+0

감사합니다. 그것은 효과가 있었다. – redGREENblue

+0

다시 불편을 드려서 죄송합니다. 이 코드는 생성시 잘 작동합니다. 업데이트 조치가 작동하지 않습니다. 'get_class()는 매개 변수 1이 객체, 배열 given'.If 나는 드롭 다운을 제거하면 에러가 발생하지 않습니다'라는 오류가 계속 발생합니다. 무엇이 문제 일 수 있습니까? – redGREENblue

+0

1. 최신 Yii가 있는지 확인하십시오 (github에서 가져 오기). 2. 두 번째 드롭 다운을 토글 (켜기/끄기)하여 디버그를 시도하십시오. 3. Yii가 제공 한 스택 추적 (프레임 워크 코드 파기)을 따라 디버깅을 시도합니다. 4. Yii stack trace의 스크린 샷을 제공하십시오. – Pave

관련 문제