2

我有一个奇怪的问题

在 AR 模型中,Gift i 与类别有很多关系

              '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 创建者强的话说:

...在 activeListBox() 中,第二个参数应该是属性名称,而不是关系名称。在您的情况下,您可能需要声明一个新属性来存储选择。

我相信同样的事情也适用于 activeCheckBoxList。

我解决这个问题的方法如下(这篇博文很有帮助Retrieving selected checkbox items in yii

为您的关系添加索引选项

'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 的文章在 Yii 表单中处理相关模型

于 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 回答