我在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(内部服务器错误)。
请提前帮助我。
答案 0 :(得分:0)
500(内部服务器错误)
出现此错误可能有很多原因,但由于您的应用程序正在运行,我猜您的代码有问题。你的代码确实看起来不错,除了这两点我认为可能是一个问题:
将echo $form->DropDownList
更改为echo $form->dropDownList
将'update'=>'#branch'
更改为正确的id
,确保branch
是第二个下拉菜单的id
,通常是ModelName_name
所以应该'update'=>'#ModelName_branch'
就像id
。检查浏览器中的第二个下拉菜单,确保$_POST['sna']
是什么。
执行这些更改并查看它是否现在有效。
您还应该启用错误记录以检查错误,这里是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);
}
}