您好我尝试使用yii CHTML下拉列表创建多级依赖下拉列表。这是我的代码:
查看_form.php
<div class="row">
<?php echo $form->labelEx($model,'kode_program'); ?>
<?php echo $form->dropDownList($model,'kode_program',
$list_prog,array(
'prompt'=>'--Pilih--',
'ajax' => array(
'type'=>'POST',
'url'=>CController::createUrl('OPS/loadKegiatan'),
'update'=>'#'.CHtml::activeId($model,'kode_kegiatan'),
'data'=>array('kode_program'=>'js:this.value',),
))
); ?>
<?php echo $form->error($model,'kode_program'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'kode_kegiatan'); ?>
<?php
//echo $form->dropDownList($model, 'kode_kegiatan', $list_keg, array('prompt' => '--Pilih--'));
echo $form->dropDownList($model, 'kode_kegiatan', array(),array(
'prompt'=>'--Pilih--',
'ajax' => array(
'type'=>'POST',
'url'=>CController::createUrl('OPS/loadOutput'),
'update'=>'#'.CHtml::activeId($model,'kode_output'),
'data'=>array(
'kode_kegiatan'=>'js:this.value',
),
)));?>
<?php echo $form->error($model,'kode_kegiatan'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'kode_output'); ?>
<?php
echo $form->dropDownList($model, 'kode_output',array(), array('prompt' => '--Pilih--'));
?>
<?php echo $form->error($model,'kode_output'); ?>
</div>
控制器OPSController.php
public function actionLoadKegiatan()
{
$data=KodePOK::model()->findAllByAttributes(array('kode_program'=>$_POST['kode_program']));
$data=CHtml::listData($data,'kode_kegiatan','nama_kegiatan');
foreach($data as $value=>$name) {
echo CHtml::tag('option',
array('value'=>$value),CHtml::encode($name),true);
}
}
public function actionLoadOutput()
{
$data=KodePOK::model()->findAllByAttributes(array(
//'kode_program'=>$_POST['kode_program'],
'kode_kegiatan'=>$_POST['kode_kegiatan']
));
$data=CHtml::listData($data,'kode_output','nama_output');
foreach($data as $value=>$name) {
echo CHtml::tag('option',
array('value'=>$value),CHtml::encode($name),true);
}
}
上面的代码没有显示任何错误,但它不起作用,我不知道为什么。请帮我。谢谢
答案 0 :(得分:0)
我已经解决了这个问题。我补充说:
echo CHtml::tag('option',array('value'=>""),"--Pilih--",true);
它有效。以下是该操作的完整代码:
public function actionLoadKegiatan()
{
$data=KodePOK::model()->findAllByAttributes(array('kode_program'=>$_POST['kode_program']));
$data=CHtml::listData($data,'kode_kegiatan','nama_kegiatan');
echo CHtml::tag('option',array('value'=>""),"--Pilih--",true);
foreach($data as $value=>$name) {
echo CHtml::tag('option',array('value'=>$value),CHtml::encode($name),true);
}
}