Данные в дополнительной колонке в CGridView

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
benge
Сообщения: 12
Зарегистрирован: 2013.12.06, 09:24

Данные в дополнительной колонке в CGridView

Сообщение benge »

Доброго всем времени суток.

У меня есть view, в которой работает виджет CGridView:

Код: Выделить всё

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'reviews-grid',
    'ajaxUpdate'=>false,
    'dataProvider' => $dataProvider,      //данные передаются посредством CSqlDataProvider
    'columns' => array(
        array(
            'name' => 'id',
            'value' => '$data["id"]',        //здесь значение $data["id"] присваивается как надо
        ),
        
        ...

        array(
            'class' => 'ControlColumn',
//проблема в том что мне нужно чтобы свойству $thereview было присвоено значение $data["id"], 
//но он мне просто рендерит строку $data["id"]
            'thereview' => '$data["id"]',              
        ),
    ),
));
 
Класс, который наследуется от CGridColumn:

Код: Выделить всё

class ControlColumn extends CGridColumn
{
    public $thereview;

    protected function renderDataCellContent()
    {
        echo $this->thereview;
    }
}
Подскажите пожалуйста что можно сделать?
К сожалению я на бронепоезде
Странник
Сообщения: 291
Зарегистрирован: 2013.04.08, 10:35
Откуда: Нижний Новгород

Re: Данные в дополнительной колонке в CGridView

Сообщение Странник »

'value' => '$data->id'
Аватара пользователя
benge
Сообщения: 12
Зарегистрирован: 2013.12.06, 09:24

Re: Данные в дополнительной колонке в CGridView

Сообщение benge »

Не могли бы вы по подробнее описать куда это надо вписывать?
К сожалению я на бронепоезде
Joseph Jevelin
Сообщения: 339
Зарегистрирован: 2012.01.06, 22:07

Re: Данные в дополнительной колонке в CGridView

Сообщение Joseph Jevelin »

В тот код, который в первом сообщении.
Аватара пользователя
benge
Сообщения: 12
Зарегистрирован: 2013.12.06, 09:24

Re: Данные в дополнительной колонке в CGridView

Сообщение benge »

Напишите пожалуйста код, я не понимаю
К сожалению я на бронепоезде
lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: Данные в дополнительной колонке в CGridView

Сообщение lancedevnull »

value сделай анонимкой, у тебя сейчас exoression не обрабатывается, в
array(
'class' => 'ControlColumn',
//проблема в том что мне нужно чтобы свойству $thereview было присвоено значение $data["id"],
//но он мне просто рендерит строку $data["id"]
'thereview' => '$data["id"]',
),
Аватара пользователя
benge
Сообщения: 12
Зарегистрирован: 2013.12.06, 09:24

Re: Данные в дополнительной колонке в CGridView

Сообщение benge »

lancedevnull писал(а):value сделай анонимкой, у тебя сейчас exoression не обрабатывается, в
array(
'class' => 'ControlColumn',
//проблема в том что мне нужно чтобы свойству $thereview было присвоено значение $data["id"],
//но он мне просто рендерит строку $data["id"]
'thereview' => '$data["id"]',
),
Я понял по вашим словам что нужно в значение thereview писать анонимную функцию, наподобие такого:

Код: Выделить всё

'thereview' => function()
     {
          //а здесь что писать?
     }
Плюс, как потом обратиться к тому что будет передано, из функции renderDataCellContent() ? Я совсем новичек в yii, да и php если честно не очень хорошо знаю, объясните пожалуйста подробнее если не трудно:)
К сожалению я на бронепоезде
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Данные в дополнительной колонке в CGridView

Сообщение ElisDN »

Подсмотрите в классе СDataColumn:

Код: Выделить всё

protected function renderDataCellContent($row, $data)
{
    $value = $this->evaluateExpression($this->thereview, array('data' => $data, 'row' => $row));
    echo $value === null ? $this->grid->nullDisplay : $value;
} 
Аватара пользователя
benge
Сообщения: 12
Зарегистрирован: 2013.12.06, 09:24

Re: Данные в дополнительной колонке в CGridView

Сообщение benge »

Спасибо
К сожалению я на бронепоезде
Ответить