最新消息: 新版网站上线了!!!

Yii CGeidView 使用技巧(1)

GridView组件,关于它的详细解释我就不介绍,大家有兴趣的可以去百度。

问题:大家都知道CGridView可以输出$dataProvider,样式很有限,如果某条记录比如 的 A.att1 字段值是另一张表的一条记录 的 一个字段值 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)