[Yii] CGridView несколько типовых вопросов

Yii

Некоторые частовозникающие вопросы (ответы взяты частично из оф. документации и stackOverflow):

Как вывести html в ячейку?

В секции columns настроек виджета CGV для нужной колонки указываем type ‘raw’. Пример:

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        'title',
        'category',
        'content',
        array(
            'name'=>'create_time',
            'value'=>'date("M j, Y", $data->create_time)',
            'type'=>'raw',
        ),
    )
));

Как добавить class для ячейки?

В секции columns настроек виджета CGV для нужной колонки указываем htmlOptions. Пример:

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        'title',
        'category',
        'content',
        array(
            'name'=>'create_time',
            'value'=>'date("M j, Y", $data->create_time)',
            'htmlOptions'=>array(
                'class'=>'myclass'
            ),
        ),
    )
));

Как добавить class для ячейки в шапке таблицы?

В секции columns настроек виджета CGV для нужной колонки указываем headerHtmlOptions. Пример:

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        'title',
        'category',
        'content',
        array(
            'name'=>'create_time',
            'value'=>'date("M j, Y", $data->create_time)',
            'headerHtmlOptions'=>array(
                'class'=>'myclass'
            ),
        ),
    )
));

Как использовать какую-то дополнительную переменную в CGV?

Два варианта. Первый — это сделать свой контроллер, который наследует CGridView, объявить в нем нужное свойство и использовать его:

Yii::import('zii.widgets.grid.CGridView');
 
class SpecialGridView extends CGridView {
    public $extraparam;
}
 
  $this->widget('SpecialGridView', array(
    'dataProvider' => $dataProvider,
    'extraparam'   => 1234          // your special parameter
    'columns' => array( ... ),
  ) );

В колонке доступ к extraparam осуществляется через $this->grid->extraparam.

Второй — это вместо value использовать анонимную функцию. Пример ($arr — переменная, к которой нужен доступ из value):

$arr = array(1,2,3,4,5);
$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        'title',
        'category',
        'content',
        array(
            'name'=>'create_time',
            'value'=> function($data) use ($arr) { return $arr[$data]; }
        ),
    )
));

Как убрать надпись «N результатов»

Вывод этого сообщения зависит от свойства summaryText. Пример:

$this->widget('zii.widgets.grid.CGridView', array(
        'dataProvider' => new CArrayDataProvider(...),
        'columns'=>array(...),
        'summaryText' => '', //
    ));

,

Оставить комментарий

Top ↑ | Main page | Back