【问题标题】:Passing data in yii dependent dropdown在 yii 依赖下拉列表中传递数据
【发布时间】:2016-09-05 11:05:03
【问题描述】:

我在 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);

}}

可能有什么问题

【问题讨论】:

    标签: php yii yii-extensions


    【解决方案1】:

    在这里,在您的代码中

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

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

    Chtml::encode($name->district_name)
    

    代替:

    CHtml::encode($name)
    

    【讨论】:

    • $value 也是错误的。应该是array('value' => $name->id)
    【解决方案2】:

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

    您似乎期待value => name 类型的数组用于$data。如果是这种情况,您应该通过CHtml::listData 函数传递$data。 您还可以使用CHtml::listOptions 来避免foreach 循环

    $data = Tblsudistricts::model()->findAll('province_id=1');
    $data = CHtml::listData($data, "id", "name");
    Yii::app()->session['districtlist'] = $data;
    echo CHtml::listOptions(null, $data, array('prompt' => '[select one]'));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-03
      • 1970-01-01
      • 2020-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多