我需要yii中的多个选择列表框,我有表单区域的代码 但它在数据库中保存为单词“数组”字段,如何处理 这个问题?
如何在查看和更新以及网格视图时返回
<?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'));
?>
谢谢。
答案 0 :(得分: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'));
?>
答案 1 :(得分:0)
如果是关系,你可能想要使用它:http://yiiext.github.com/activerecord-relation-behavior/负责将数组保存到多对多关系联结表中。
否则,就像Orlymee所说的那样,你需要通过循环来保存数组的每个项目,或者你可以序列化数组或将其内嵌到逗号分隔值中,并反过来选择保存的任何方法,同时查看。
答案 2 :(得分:0)
将此代码保存在控制器中
$arr = implode(",",$model->attributes['hobbies']);
$model->hobbies=$arr;
在控制器创建中,在第一个if条件下更新
在数据库中,您可以使用逗号作为分隔符
查看值答案 3 :(得分:0)
$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);
答案 4 :(得分:0)
这在Html :: 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',
)
);?>
但最好使用Html :: listBox()