3

我需要yii中的多选列表框,我有表单区域的代码,但它作为字段中的单词“Array”保存到数据库,如何处理这个问题?

如何在查看和更新​​以及网格视图时返回

<?php echo $form->dropDownList($model,'clients', 
  CHtml::listData(client::model()->findAll(array('order'=>'id')), 'id', 'name'),
     array('empty'=>'','multiple'=>'multiple','style'=>'width:400px;','size'=>'10'));
?>

谢谢你。

4

5 回答 5

3

对我来说是这样的:

'multiple'=>true

您的代码必须是这样的:

<?php echo $form->dropDownList($model,'clients', 
  CHtml::listData(client::model()->findAll(array('order'=>'id')), 'id', 'name'),
     array('empty'=>'','multiple'=>true ,'style'=>'width:400px;','size'=>'10'));
?>
于 2013-01-18T13:46:18.740 回答
1
$htmlOptions = array('size' => '5', 'multiple' => 'true','style'=>'width: 333px');

$model->field_id = array_of_data_to_be_selected

$form->listBox($model,'field_id',$listData, $htmlOptions);

于 2013-05-17T08:43:31.653 回答
0

如果它是一个关系,你可能想使用这个:http: //yiiext.github.com/activerecord-relation-behavior/它负责将数组保存到多对多关系连接表中。

否则,就像 Orlymee 所说,您需要通过循环保存数组的每个项目,或者您可以序列化数组或将其内爆为逗号分隔值,并在查看时执行您选择保存的任何方法的相反操作。

于 2012-05-27T15:49:02.153 回答
0

将此代码保存在控制器中

$arr = implode(",",$model->attributes['hobbies']);

$model->hobbies=$arr;

在控制器创建中,在第一个 if 条件下更新

在数据库中,您可以看到以逗号作为分隔符的值

于 2012-06-06T05:23:40.793 回答
0

这在 CHtml::listBox() 中是如何工作的

if(!empty($htmlOptions['multiple']))
{
    if(substr($name,-2)!=='[]')
        $name.='[]';
}

所以你可以试试这个

<?php echo $form->dropDownList($model,'clients', 
    CHtml::listData(client::model()->findAll(array('order'=>'id')), 'id', 'name'),
    array(
>>>     'name'=>CHtml::resolveName($model, 'clients').'[]',
        'empty'=>'',
        'multiple'=>'multiple',
        'style'=>'width:400px;',
        'size'=>'10',
    )
);?>

但最好使用 CHtml::listBox()

于 2014-12-19T11:53:11.673 回答