2017-01-06 7 views
2

Я сохранил некоторые данные в формате json в моей базе данных в одном поле под названием json. Я использовал виджет, чтобы отобразить полный список продуктов.Как использовать элемент данных json вместо поля в виджетах для отображения полного списка?

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'page-grid', 
    'dataProvider'=>$model->search(), 
    'filter'=>$model, 
    'columns'=>array(
     'id', 
     'name', 
     'json', 
     array(
      'class'=>'CButtonColumn', 
     ), 
    ), 
)); ?> 

я декодируется поле (так называемый json), который содержит данные JSON. И я собираюсь использовать значение декодированного json(p_1 element of decoded json (json["p_1"])) в виджетах вместо всего поля (так называемый json).

(Потому что поля (называемые json) содержат много данных, и мне нужны только данные). Как использовать p_1 вместо поля (json)?

ответ

1

Вы можете передать выражение php в качестве отображаемого значения. $data представляет собой модель данных для строки.

'columns' => array(
    'id', 
    'name', 
    array(
     'name' => 'json', 
     'value' => '$data->json["p_1"]' 
    ), 

Ссылка: http://www.yiiframework.com/doc/api/1.1/CDataColumn#value-detail

+0

Это не работает. Я использовал для удаления json-данных, используя следующий код $ json ["p_1"] (Здесь $ json = CJSON :: decode ($ model-> json);). когда я вставил знак $ перед json ('value' => '$ data -> $ json ["p_1"]'), он не работал – phpdev

+0

Похоже, что вы неправильно назначили декодированный json. Код в вашем вопросе показывает json в столбце 'json'? – topher