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)