2014-09-15 8 views
0

현재 점심 시간과 사용자를 표시하기 위해 cgridview (Yii)를 사용하고 있습니다. 사용자는 데이터베이스의 JSON에 저장되어 있으며이 테이블을 나머지 테이블과 동일한보기로 디코딩하는 방법을 궁금합니다.Cgridview의 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

또한 방법은

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

를 모델에 추가하고 사용할 수

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

코드에 중요한 설명이 없습니다.

시도 -

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

'이름'키 필터가 필요합니다.