0

我正在尝试使用下拉列表小部件:

  $this->widget('ext.multiselect.JMultiSelect',array(
      'model'=>$model,
      'attribute'=>'attribute',
      'data'=>$data,
      // additional javascript options for the MultiSelect plugin
      'options'=>array()
));

我想知道的是小部件数组中可用的每个选项的详细信息,例如“属性”、“模型”和“数据”代表什么,因为我无法从文档中理解它。

4

2 回答 2

3

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' 的字段)

于 2012-10-02T08:59:26.703 回答
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'); ?>
于 2012-10-02T13:06:22.230 回答