參數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」和「名」是從模型表中的字段你想成爲陣列中的'鑰匙'和'價值')
來源
2012-10-02 08:59:26
Stu
如果我想從數據庫添加數據到$ data中怎麼辦? –
爲了您可以使用CHtml :: listData(),我已經更新了我的答案,包括一些關於你的信息。 – Stu
我已經這樣做了。現在我的分機電話出現錯誤: 別名「ext.multiSelect.JMultiSelect」無效。確保它指向一個現有的PHP文件。 –