2

私は奇妙な問題を抱えています

AR モデルでは、Gift i はカテゴリと many_many の関係を持っています

              'categories'=>array(self::MANY_MANY, 'GiftCategory',
                        'tbl_category_gift(gift_id, category_id)'),

$gift->categories を呼び出すと、アクティブなレコード オブジェクトが返され、データベースに値が正しく格納されていることがわかります

しかし、私が書くとき

        <? echo $form->checkBoxList($model, "categories", GiftCategory::listData()); ?>

私のチェックボックスリストでは、モデルにカテゴリがある場合、値が 1 つだけ選択されています。

問題: Yii activeCheckBoxList が 1 つのチェック済みのみを表示する (最初のみ)

4

2 に答える 2

2

Yii 作成者 Qiangの言葉を借りれば、それは機能しません。

...activeListBox() では、2 番目のパラメータは関係名ではなく、属性名にする必要があります。あなたの場合、選択を保存するために新しいプロパティを宣言する必要があるかもしれません。

同じことがactiveCheckBoxListにも当てはまると思います。

これを解決した方法は次のとおりです(このブログ投稿は役に立ちました yiiで選択されたチェックボックス項目を取得する

リレーションに index オプションを追加する

'categories' => array(self::MANY_MANY, 
    'Category', 'post_category(post_id, category_id)','index'=>'id'),

モデルにプロパティを追加する

public $selectedCategoryIds

この属性を afterFind に入力します

public function afterFind()
{
    parent::afterFind();
    $this->selectedCategoryIds = array_keys($this->categories);
}

ビューでこの新しい「属性を使用する

<? echo $form->checkBoxList($model, "selectedCategoryIds", GiftCategory::listData()); ?>

このデータの更新を適切に処理するには、Larry Ullman の記事「Handling Related Models in Yii Forms 」を参照してください。

于 2012-11-01T06:23:56.047 に答える
0
<?php
echo CHtml::activeCheckBoxList($model, 'categories',
        CHtml::listData(GiftCategory::model()->findAll(), 'id', 'title'),
        array('checkAll' => ' Select All'));
?>
于 2016-01-09T06:00:34.207 に答える