我有一个奇怪的探测器
在AR模型中,Gift i与类别有很多关系
'categories'=>array(self::MANY_MANY, 'GiftCategory',
'tbl_category_gift(gift_id, category_id)'),
当我调用$ gift->类别时,它返回活动记录对象,在数据库中,我看到值正确存储
但是当我写作
<? echo $form->checkBoxList($model, "categories", GiftCategory::listData()); ?>
在我的复选框列表中,如果模型有类别,则只选择1个值,我不明白wtf是它,请帮助:)
问题:Yii activeCheckBoxList只显示1个已选中(仅限第一个)
答案 0 :(得分:2)
它不起作用,因为,Yii creator Qiang:
...在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的文章Handling Related Models in Yii Forms
答案 1 :(得分:0)
<?php
echo CHtml::activeCheckBoxList($model, 'categories',
CHtml::listData(GiftCategory::model()->findAll(), 'id', 'title'),
array('checkAll' => ' Select All'));
?>