从属下拉内部服务器错误(500)

时间:2015-09-30 08:45:45

标签: php yii

我在StackOverFlow中发现了这个问题。但是我得到了不同的错误。 我试着尝试在yii中实现Dependent DropDown。值从数据库到First Dropdown。但是我无法在Second DropDown中获得结果输出。

控制器:

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(内部服务器错误)。

请提前帮助我。

2 个答案:

答案 0 :(得分:0)

  

500(内部服务器错误)

出现此错误可能有很多原因,但由于您的应用程序正在运行,我猜您的代码有问题。你的代码确实看起来不错,除了这两点我认为可能是一个问题:

  1. echo $form->DropDownList更改为echo $form->dropDownList

  2. 'update'=>'#branch'更改为正确的id,确保branch是第二个下拉菜单的id,通常是ModelName_name所以应该'update'=>'#ModelName_branch'就像id。检查浏览器中的第二个下拉菜单,确保$_POST['sna']是什么。

  3. 执行这些更改并查看它是否现在有效。

    您还应该启用错误记录以检查错误,这里是link

    修改

    正如@Hearaman所回答,您还应将$_POST['ModelName']['sna']更改为with open('file.dat') as f: line = f.read().split() for row in range(len(line)): for col in range(6): print line[row + 52*col], print

答案 1 :(得分: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);
    }
}