paramは、model
マルチセレクトを作成するモデルです。
これattribute
は、マルチセレクトを作成するモデル属性です。
はdata
、複数選択で表示するリスト項目のキーと値のペアの配列です。
たとえば、モデル「User」があり、そのモデルにフィールド「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」にしたいモデルテーブルのフィールドです)