我正在尝试使用下拉列表小部件:
$this->widget('ext.multiselect.JMultiSelect',array(
'model'=>$model,
'attribute'=>'attribute',
'data'=>$data,
// additional javascript options for the MultiSelect plugin
'options'=>array()
));
我想知道的是,小部件数组中可用的每个选项的详细信息类似于'属性','模型'和数据'代表,因为我无法理解它构成文档。
答案 0 :(得分:3)
model
参数是您为其创建多重选择的模型。
attribute
是您要为其创建多重选择的模型属性。
data
是要在多重选择中显示的列表项的键/值对数组。
例如,如果您有一个模型“用户”,并且在该模型中您有一个字段'access_rights',并且您希望将该字段作为具有少量值的多选框,则可能会执行以下操作:
在您的控制器中:
$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'的字段)
答案 1 :(得分:0)
echo $form->dropDownList($model, 'category', CHtml::listData(TblCategory::model()->findAll(),
'id', 'category_name'), array('empty' => '---Select Category---',
'style' => 'width:350px;')), array() ?>
<?php echo $form->error($model, 'category'); ?>