PHP开发实例大全(提高卷) 中文完整pdf扫描版[244MB]
GridView组件,关于它的详细解释我就不介绍,大家有兴趣的可以去百度。
问题:大家都知道CGridView可以输出$dataProvider,样式很有限,如果某条记录比如 A 的 A.att1 字段值是另一张表的一条记录 B 的 一个字段值 B.att2,而我们想在CGridView里面,通过 A.att1=B.att2找到B中那条记录的主键,比如:一个项目表地区字段值为 tj,gz,bj,在地区表里分表表示天津、广州、北京,Yii的组件即使你在前端查询到这条记录也不用传到组件中使用,办法有两个。
方法1:
|
|
array('name'=>'xiaofei','value'=>'$data->xiaofei=="0"?"未消费":"已消费"','filter'=>array(0=>'未消费',1=>'已消费')), |
name表示字段名,filer表示admin页面中,表格前端选择查询的条件及显示样式
方法2:
在view里面,使用回调,Fendian::area(模型::方法),特别需要注意的是方法必须为静态的!(为什么?我也不知道!)
|
|
array('name'=>'distract_id','value'=>'Fendian::area($data->distract_id)'), |
然后在Fendian模型中加入该方法,并申明为静态方法
|
|
public static function area($id) { $area = Area::model()->findAll(); $arr; foreach ($area as $key => $value) { $arr[$value->distract_id] = $value->distract_name; } return $arr[$id]; } |
这样就OK了
转载请注明:谷谷点程序 » Yii CGeidView 使用技巧(1)