在yii依赖下拉列表中传递数据

时间:2016-09-05 11:05:03

标签: php yii yii-extensions

我在yii1中创建了一个依赖的下拉列表但是我总是得到一个错误的htmlspecialchars()期望参数1是字符串,给定的对象

这是控制器动作代码

public function actionDistrictList() {
    $id = (int)$_POST['province'];

    $data = Tblsudistricts::model()->findAll('province_id=1');
    Yii::app()->session['districtlist'] = $data; //save created list to session
    echo CHtml::tag('option', array('value' => ''), CHtml::encode('[select one]'), true);
    foreach ($data as $value => $name){
        echo CHtml::tag('option', array('value'=>$value),CHtml::encode($name),true);   
        //echo CHtml::tag('option', array('value' => $value), CHtml::encode($name), true);

}}

可能出现什么问题

2 个答案:

答案 0 :(得分:2)

此处,在您的代码中

foreach ($data as $value => $name){
    echo CHtml::tag('option', array('value'=>$value),CHtml::encode($name),true); 

$value是一个索引,$name是一个对象,您必须使用其参数 例如:

Chtml::encode($name->district_name)

Instaed of:

CHtml::encode($name)

答案 1 :(得分:0)

Abhishek's answer是正确的。但是,value也存在问题。 $value$data数组中对象的索引,而不是id。

看起来你期待value => name的{​​{1}}数组。如果是这种情况,您应该通过CHtml::listData函数传递$data。 您也可以使用CHtml::listOptions

来避免$data循环
foreach