需要有多个选择的列表框 - 在yii中

时间:2012-05-24 15:47:03

标签: yii html-select yii-chtml

我需要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'));
?>

谢谢。

5 个答案:

答案 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()