目前我正在使用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',
),
),
)); ?>
我该如何解决这个问题?
答案 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'
),