samubra 2012-04-17 21:31:17 3822次浏览 0条回复 0 0 0

前两天没事的时候翻了下yiiframework.com的wiki页面,看到一个非常强大到技巧,在CGridView里面自定义显示columns,简单点:

array(
    'name'=>'category_id',
    'value'=>'$data->category_id?$data->category->title:"没有分类"',
    'filter'=>false,
    'htmlOptions'=>array('width'=>'130px')
),

这是显示文章所属分类的一个columns,通过定义表之间的关系我们通常是上面那样写的,发现还可以这样写:

array(//'$data->category_id?$data->category->title:"没有分类"',
    'name'=>'category_id',
    'value'=>array($this,'getcatoryname'),
    'filter'=>false,
    'htmlOptions'=>array('width'=>'130px')
),

调用当前控制器里面的getcatoryname方法,getcatoryname在控制器里面就像这样:

public function getcatoryname($data,$row){
    if ($data->category_id){
        return $data->category->title.$row;
    }else{
        return '没有数据'.$row;
    }
}

方法参数里面$data指的是在CGridView中传入的$model,$row是表示当前为多少行,第一行为0,比如说当前第四条数据没有关联的cateroy,他会显示“没有数据3”,很强大吧? 既然可以调用当前控制器的方法,那么在方法中调用试图不是就可能了么? 所以,这个技巧很强大! 原文地址在:http://www.yiiframework.com/wiki/278/cgridview-render-customized-complex-datacolumns 欢迎拍砖

    没有找到数据。
您需要登录后才可以回复。登录 | 立即注册