You don't need to create own column Class. You can create simple raw-column and show there anything you want:
[
'attribute' => 'some_title',
'format' => 'raw',
'value' => function ($model) {
return '<div>'.$model->id.' and other html-code</div>';
},
],
This function
function ($model) {
return '<div>'.$model->id.' and other html-code</div>';
}
names callback function. There is core method evaluateExpression in CComponent:
public function evaluateExpression($_expression_,$_data_=array())
{
if(is_string($_expression_))
{
extract($_data_);
return eval('return '.$_expression_.';');
}
else
{
$_data_[]=$this;
return call_user_func_array($_expression_, $_data_);
}
}
in our case expression is not string, it's a function, so it runs php method call_user_func_array and pass into it your model.