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



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

谢谢。

对我来说

是这样的:

'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'));
?>
$htmlOptions = 数组("大小" => "5", "多个" => "真","样式"=>"宽度:333px");$model->field_id = array_of_data_to_be_selected$form->listBox($model,'field_id',$listData, $htmlOptions);

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

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

将此代码保存在控制器中

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

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

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

这在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()

最新更新