model
参数是您为其创建多选的模型。
这attribute
是您为其创建多选的模型属性。
这data
是要在多选中显示的列表项的键/值对数组。
例如,如果您有一个模型“用户”并且在该模型中您有一个字段“访问权限”并且您希望将该字段作为具有几个值的多选框,您可能会执行以下操作:
在您的控制器中:
$model = new User;
$data = array(
'admin_area'=>'Admin Area Access',
'product_area'=>'Product Area Access',
'customer_area'=>'Customer Area Access',
... etc
);
在您的视图文件中的表单中:
$this->widget('ext.multiselect.JMultiSelect',array(
'model'=>$model,
'attribute'=>'access_rights',
'data'=>$data,
// additional javascript options for the MultiSelect plugin
'options'=>array()
));
编辑:
要将数据添加到来自另一个模型的多选选项,您可以使用CHtml::listData()方法,这需要一个活动记录结果集并将其转换为键/值对数组,以便您可以在任何其他模型中使用需要键/值对的 CHtml 方法。为此,您只需使用活动记录从数据库中获取您想要的记录,例如;
$myData = Data::model->findAll();
然后,您可以将其放入 listData() 方法中,它将创建您的数组:
$this->widget('ext.multiselect.JMultiSelect',array(
'model'=>$model,
'attribute'=>'access_rights',
'data'=>CHtml::listData($myData, 'id', 'name'),
// additional javascript options for the MultiSelect plugin
'options'=>array()
));
(其中 'id' 和 'name' 是模型表中您希望成为数组中的 'key' 和 'value' 的字段)