【问题标题】:Yii CArrayDataProvider Keyfield As Button Id In CGridViewYii CArrayDataProvider Keyfield 作为 CGridView 中的按钮 ID
【发布时间】:2014-06-15 19:02:31
【问题描述】:

我的问题有两个。首先,我无法正确设置 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"))'), 
        ),
));

【问题讨论】:

  • 在你的结果集中你已经有一个 'id' 字段,从你的 $dataProvider 定义中删除 'keyField'=>'id'
  • @Alejandro 感谢您的快速回复。我试了一下,但我仍然认为它没有设置 keyField。 CArrayDataProvider 的 print_r 显示 [keyField]=>id, [rawData] => array(array(values), array(values), etc)。 id标签也从按钮上消失了,现在什么都没有了。
  • 只是一个响亮的想法!尝试删除'name'=>'' ...

标签: php ajax yii


【解决方案1】:

尝试通过您已经应用的 CHtml::button 传递它。例如

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2014-07-22
    • 1970-01-01
    相关资源
    最近更新 更多