[英]Yii - Change column in CGridView for another model's field
In my model (let's say Model A ) I have a field corresponding to the id of another model ( Model B ). 在我的模型中(假设模型A ),我有一个与另一个模型( 模型B )的id对应的字段。 In a
CGridView
composed of Model A items, instead of showing the id of Model B, I want to show another field of that model instance. 在由模型A项组成的
CGridView
,我不想显示模型B的ID,而是要显示该模型实例的另一个字段。
Here's how I am showing my CGridView
; 这是我显示
CGridView
;
$dataProvider = new CArrayDataProvider('Model A');
$dataProvider->setData($model_A_Data); // $model_A_data is an array of Model A Objects
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'data-id',
'dataProvider'=>$dataProvider, //$objects->search(),
'columns'=>array(
array('header'=>'Model A Id', 'name'=>'id'),
array('header'=>'Name', 'name'=>'name'),
array('header'=>'Date', 'name'=>'date_created'),
array('header'=>'Model B Id', 'name'=>'model_b_id'), // *HERE SHOW ANOTHER FIELD OF MODEL B*
),
));
How can I change that column in order to show another field of model B clasS? 如何更改该列以显示模型B clasS的另一个字段?
Thanks 谢谢
say in Model A
i have a relation 说在
Model A
我有关系
array('modelbrelationname','ModelB','id'),
So You can have the value like this 所以你可以拥有这样的价值
$dataProvider = new CArrayDataProvider('Model A');
$dataProvider->setData($model_A_Data); // $model_A_data is an array of Model A Objects
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'data-id',
'dataProvider'=>$dataProvider, //$objects->search(),
'columns'=>array(
array('header'=>'Model A Id', 'name'=>'id'),
array('header'=>'Name', 'name'=>'name'),
array('header'=>'Date', 'name'=>'date_created'),
array('header'=>'Model B Id', 'value'=>'modelbrelationname.id'), // *HERE SHOW ANOTHER FIELD OF MODEL B*
),
));
OK, I figured out how to solve this after discovering the $data
var in CGridView
which holds the corresponding row data. 好的,我在
CGridView
发现了包含相应行数据的$data
CGridView
后,想出了解决方法。
Simply add this: 只需添加以下内容:
array('name'=>'Model B Another Field',
'value'=> 'ModelB::model()->FindByPk($data->id)->another_field'
),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.