Cgridview中的JSON解码

时间:2014-09-15 11:20:04

标签: php json yii

目前我正在使用cgridview(Yii)来展示午餐和午餐的用户。用户存储在数据库中的JSON中,我想知道如何使用与我的表的其余部分相同的视图显示解码。

代码是:

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'lunch-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        'id',
        'date',
        'cook',
        'food',
        'price',
        'users',
        array(
            'class'=>'CButtonColumn',
            ),
        ),
        )); ?>

我正在考虑这样的事情,但是顶部的过滤器字段消失了......

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'lunch-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        'id',
        'date',
        'cook',
        'food',
        'price',
        array( 'header' =>'Users',
            'type'=>'raw',
            'value'=> 'implode(", ", CJSON::decode($data->users))',     
            ),
        array(
            'class'=>'CButtonColumn',
            ),
        ),
        )); ?>

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

代码缺少重要声明。

尝试 -

array(
    'name' => 'users',
    'header' => 'Users',
    'type'=> 'raw',
    'value'=> 'implode(", ", CJSON::decode($data->users))',
),

&#39;名称&#39;过滤器需要密钥。

答案 1 :(得分:0)

您还可以将方法添加到模型

public function getDecodeUsers(){
    return implode(",", CJSON::decode($this->users));
}

并使用

array(
    'name' => 'decodeUsers',
    'header' => 'Users'
),