Yii CArrayDataProvider Keyfield作为CGridView中的按钮ID

时间:2014-04-29 17:32:46

标签: php ajax yii

我的问题是双重的。首先,我无法正确设置CArrayDataProvider的keyField,所有我回来的都是字符串而不是值。其次,我试图使用CArrayDataProvider中的keyField在CGridView内的每一行的按钮上设置一个id。我想这样做的原因是我可以将id值向前传递给ajax函数(如果有更好的方法在Yii中执行此操作,我会全部听到)。任何帮助将非常感谢,提前感谢!

我也在Yii的论坛上发过一次这个问题。我通常不会重新发布,但我很难在那里得到答案,而不是堆栈溢出,你们是最好的!如果有人有兴趣,可以Here's the link到我原来的帖子。

以下是我如何构建我用作RAW数据的数组:

foreach ($items as $item) {
        $tableRow = array("id"=>$item["Id"], "Organization"=>$item["Organization"], "Roles"=>$item["Roles"]);
        $return_items[] = $tableRow;
}

这是我正在使用的CArrayDataProvider设置。我注意到了' keyField'没有给出id值,只有字符串' id':

$dataProvider=new CArrayDataProvider($return_items, array(
        'keyField'=>'id',
        'sort'=>array(
                'attributes'=>array(
                        'Organization',
                        'Roles',
                ),
        ),
        'pagination'=>array(
                'pageSize'=>10,
        ),
));

最后,这是CGridView我尝试在视图中进行设置。按钮上显示的所有内容都是id标记,但没有值:

$this->widget('zii.widgets.grid.CGridView', array(
        'dataProvider'=>$authItems,
        'columns'=>array(
                'Organization',
                'Roles',
                array('name'=>'', 
                          'type'=>'raw', 
                          'htmlOptions'=>array('id'=>'id'),
                          'value'=>'CHtml::button("Edit Roles", array("data-toggle"=>"modal", "data-target"=>"#roles-modal"))'), 
        ),
));

1 个答案:

答案 0 :(得分:4)

尝试通过已经应用的CHtml ::按钮传递它。 E.g。

'value'=>'CHtml::button("Edit Roles", array(
            "id"=>$data["id"],
            "data-toggle"=>"modal",
            "data-target"=>"#roles-modal"
          ))'),