2015-09-30 2 views
1

Я нашел как этот вопрос в StackOverFlow.but, я получаю другую ошибку. Я пытаюсь реализовать зависимый DropDown в yii. значения получают из базы данных в First Dropdown. но я не могу получить итоговый результат во втором DropDown.Зависимая ошибка внутреннего сервера выпадения (500)

Контроллер:

public function actionDynamic(){ 
     $data=Stu::model()->findAll('sna=:parent_id', 
       array(':parent_id'=>$_POST['sna'])); 
     // var_dump($data); 
     // exit(); 

    $data=CHtml::listData($data,'branch','branch'); 
    // var_dump($data); 
    // exit(); 
    foreach($data as $value=>$name){ 
     echo CHtml::tag('option', 
        array('value'=>$value),CHtml::encode($name),true); 
    } 
} 

Вид:

<div class="row"> 
    <?php echo $form->labelEx($model,'sna'); ?> 
     <?php 
     $snaArray = CHtml::listData(Stu::model()->findAll(),'sna','sna'); 
       echo $form->DropDownList($model,'sna',$snaArray, 
         array(
          'ajax' => array(
          'type'=>'POST', 
          'url'=>CController::createUrl('stu/dynamic'), 
          'update'=>'#branch'))); 
       ?> 
    <?php echo $form->error($model,'sna'); 

    // var_dump($snaArray); 
    // exit(); 
    ?> 
</div> 


<div class="row"> 
    <?php echo $form->labelEx($model,'branch'); ?> 
    <?php echo CHtml::dropDownList('branch','', array(), array('prompt'=>'Select Branch')); ?> 
    <?php echo $form->error($model,'branch'); ?> 
</div> 

Таблица:

sid int 
sna varchar(25) 
branch varchar(5) 

Я следовал этой ссылке http://www.yiiframework.com/wiki/24/ для достижения зависимого выпадающего меню

он не показывает никаких ошибок. но на вкладке сети (клавиша f12) измените первое раскрывающееся меню, в котором отображается «http://localhost:8080/student/index.php?r=stu/dynamic» 500 (Внутренняя ошибка сервера).

, пожалуйста, помогите мне заблаговременно.

+0

Что скажут серверные журналы ошибок? У них будет причина ошибки 500. Место регистрации зависит от вашего пакета сервера. В стек LAMP попробуйте/var/log/httpd/* errror_log или Google для вашей ОС и веб-сервера. –

ответ

0

500 (Внутренняя ошибка сервера)

Там может быть много причин для этой ошибки, чтобы показать вверх, но так как ваше приложение работает, я думаю, есть что-то не так с вашим кодом. Ваш код кажется штрафом за эти две пары точек, которые я предполагаю, может быть проблемой, за исключением:

  1. Изменения echo $form->DropDownList к echo $form->dropDownList

  2. Изменения 'update'=>'#branch' к правильным id, убедитесь, что branch является id из второй выпадающий, обычно его ModelName_name, так что это должно быть как 'update'=>'#ModelName_branch'. Осмотрите второй снимок в браузере, чтобы убедиться, что такое id.

Внесите эти изменения и посмотрите, работает ли это сейчас.

Вы также должны включить регистрацию ошибок для проверки на наличие ошибок, вот link.

EDIT:

Как ответил @Hearaman вы должны также изменить $_POST['sna'] к $_POST['ModelName']['sna']

0

Проблема здесь

$ _POST [ 'SNA']

В вашем сообщении ajax Почтовые данные будут отправляться в форме YourModel[property]

EX: 

Stu['sna'] 
Stu['some_other'] 

Таким образом, в своем действии динамической $_POST['sna'] не может выбрать размещенную значение

Изменение:

$data=Stu::model()->findAll('sna=:parent_id', array(':parent_id'=>$_POST['sna'])); 

Для

$data=Stu::model()->findAll('sna=:parent_id', array(':parent_id'=>$_POST['Stu']['sna'])); 

ИЛИ

public function actionDynamic() 
{ 
    $postValues=$_POST['Stu'];   
    $data = Stu::model()->findAll('sna=:parent_id', array(':parent_id' =>$postValues['sna'])); 

    $data = CHtml::listData($data, 'sna', 'sna');   
    foreach ($data as $value => $name) 
    { 
     echo CHtml::tag('option', array('value' => $value), CHtml::encode($name), true); 
    } 
} 
Смежные вопросы