我有一个包含多列的Cgridview。我想合并并在1列中渲染3列的值。
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'policy-grid',
'dataProvider'=>$dataProvider,
'filter'=>$dataProvider->model,
'selectableRows' => 1, // you can select only 1 row!!
'selectionChanged'=>'function(id){ var objectId = $.fn.yiiGridView.getSelection(id);
if (isNaN(objectId) || objectId == ""){return;} location.href =
"'.$this->createUrl('policy/view').'&id="+$.fn.yiiGridView.getSelection(id);}',
'htmlOptions'=>array('class'=>'grid-view grid_pointer',),
'columns'=>array(
array(
'name' => 'compliance',
'type' => 'html',
'value' => '$data->status == "ACTIVE" ? (CHtml::image($data->compliance ==
"SUFFICIENT" ? "images/policy_sufficient.png" : "images/policy_insufficient.png"))
: "N/A" ',
'filter' => VFFormUtil::getFilter(VFFormUtil::POLICY_COMPLIANCE),
'htmlOptions' => array('style'=>'text-align: center'),
),
array(
'name' => 'status',
'filter' => VFFormUtil::getFilter(VFFormUtil::ACTIVE_INACTIVE),
'htmlOptions' => array('style'=>'text-align: center'),
),
array(
'name' => 'coverage_left',
'htmlOptions' => array('style'=>'text-align: center'),
),
array(
'name' => 'model_year',
'htmlOptions' => array('style'=>'text-align: center'),
),
'make',
'model',
如何将'model_year','make'和'model'组合成视图中的1列?
答案 0 :(得分:1)
正确的方法是在模型中创建一个新的属性变量,并加入值afterFind()
。
请参阅How to have multiple fields (D/M/Y) for single date property in Yii?,但您必须交换查找和保存功能,因为该用户希望执行相反操作(将单个列拆分为三个字段)。
答案 1 :(得分:0)
您可以在模型中创建一个getter:
public function getModelLabel()
{
return $this->model_year.' '.$this->make.' '.$this->model;
}
然后,您可以在GridView中使用modelLabel
,就像它是一个真正的属性一样。