Customize CGridView columns directly in your view

You are viewing revision #2 of this wiki article.
This version may not be up to date with the latest version.
You may want to view the differences to the latest version.

next (#3) »

You usually take a model instance passed into your view to provide data to a CGridView in this way:

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider' => $model->search() ,
));

Very often, you will want to customize a single column, while keeping the rest untouched. There are many ways to accomplish this, but I find the following to be the easiest one:

$columns = array_keys($model->metaData->columns);
$columns['column_name'] = array(
    'name' => 'column_name',
    'value' => ...
);
$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider' => $model->search() ,
    'columns' => $columns
));

I have used the metaData ActiveRecord's property to get all the model's attribute names and then customized a single attribute (i.e. column_name), keeping the rest to the defaults, directly in the view, without having to perform loops or implement methods in other classes.

2 1
5 followers
Viewed: 34 358 times
Version: Unknown (update)
Category: Tips
Written by: clapas
Last updated by: clapas
Created on: Aug 14, 2012
Last updated: 5 years ago
Update Article

Revisions

View all history

Related Articles