我在公司模型的view.php页面上的CDetailView下面显示一个CGridView。我在使用公司详细信息在CGridView中显示值时遇到问题。公司模型有一系列CompanyAddresses,用作CGridView的CArrayDataProvider。
$config = array();
$dataProvider = new CArrayDataProvider($rawData=$model->companyAddresses,$config);
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider
, 'columns'=>array(
//'id',
array('header'=>'SN.',
//'value'=>'++$row', // may nt work with pagination but the below does work
'value'=>'$this->grid->dataProvider->pagination->currentPage * $this->grid->dataProvider->pagination->pageSize + ($row+1)',
),
'address',
array(
'name'=>'Tehsil',
//'value'=> Utility::getTehsilName(Tehsil::model()->findByPk('tehsil_id')),
'value'=> Utility::getTehsilName($this->loadModel('tehsil_id')),
//'value'=> Tehsil::model()->findByAttributes( array('id' => 'tehsil_id' ) )->name,
),
array(
'name'=>'address_tag_id',
'value'=>AddressTag::model()->findByPk('address_tag_id'),
),
)
));
我无法从Tehsil表中获取Tehsil_Name,该表的ID在CompanyAddress表中。
答案 0 :(得分:1)
您的使用值属性错误,请检查:
'value'=>function($data){
return Utility::getTehsilName($data->tehsil_id);
},
答案 1 :(得分:0)
value
是一个php表达式,它被评估为生成gridview单元格的内容,如下所示
'value' => 'Utility::getTehsilName($this->grid->controller->loadModel($data->tehsil_id))'
如果您使用relation chaining来解决这个问题,那么您的表达式将被简化为:
'value' => '$data->model1->tehsil->name'
其中model1
是中间关系。