2013-04-04 4 views
2

Я хотел бы визуализировать виджет внутри ячейки CGridView. Как это возможно?Yii - визуализировать виджет внутри ячейки GridView

Если быть точным - я хочу отобразить виджет TbProgress внутри CGridView. Я не могу найти решения для этого, поэтому я был бы признателен за любую помощь.

+0

Что делать, если вы используете свойство 'template'? –

+0

Что относительно пользовательского класса DataColumn? –

+0

Вы можете просто использовать пользовательскую функцию для рендеринга этой ячейки. Что вы на самом деле пытались сделать? – soju

ответ

3

В функции определения столбцов используется как value. В случае, если функция возвращает html, используйте type как raw, поэтому он не будет экранирован. Функция будет получать параметр $data с текущим экземпляром модели. Вот простой пример:

$this->widget('CGridView', [ 
    'dataProvider' => $dataProvider, 
    'columns' => [ 
      [ 
       'name' => 'title', 
       'type' => 'raw', 
       'value' => function($data) 
       { 
        return CHtml::link(MHtml::i18nGetValue($data, 'title'), ["page/update", "id" => $data->id]); 
       }, 
      ], 
.... 
+1

Великолепно! Спасибо за отличный ответ. – Joe