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

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」にしたいモデルテーブルのフィールドです)

于 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 に答える