木初 2014-11-17 22:55:56 30570次浏览 6条回复 7 1 0

GridView::widget 里面怎么去自定义一个字段,,比如 订单状态,数据库里存的是1 2 3
怎么去对应的去显示。。 难道只能在模板里判断么

在1里面这样实现的

第一步: 设置视图:admin.php

$this->widget('zii.widgets.grid.CGridView', array(
     'id'=>'mz-qingcomment-grid',
     'dataProvider'=>$model->search(),
     'filter'=>$model,
     'columns'=>array(
         'id',
         'content',
         array(
             'name'=>'type',
             'type'=>'raw',
             //调用controller下面的方法get_type_text,$this就是当前controller。 会自动传入值。
            'value'=>array($this,'get_type_text'),   //调用自定义的函数
            'htmlOptions'=>array('width'=>"90px"),   //设置样式
        ),        

       array( 'class'=>'CButtonColumn'  ),
     ),
 ));

第二步:在Controller控制器中写函数:

//判断推荐的类型   $data 代表行数据,$row 代表行号。
public function get_type_text($data,$row){
         $type = $data->type;
         if( $type == 1 ) {
             echo '待审核';
         }elseif( $type == 2 ) {
             echo '已审核';
         }elseif( $type == 3 ) {
             echo '未通过';
         }
}

但是在2 里面就不可以这样用了,不知道为什么,,实在不想把 判断信息写在模板里,求大神相助。,

觉得很赞
  • 回复于 2014-11-19 14:26 举报
    <?=GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => [
        [
            'attribute' => 'state',
            'label'=>'状态',
            'value'=>
    	function($model){
                return $model->isValid==1?"有效":"无效";
    	},
        ],
        ],
    ]); ?>
    
    1 条回复
    回复于 2015-10-03 23:27 回复
    function($model){
            return $model->isValid==1?"有效":"无效";
    },
    

    $model是什么?代表那个变量?

    觉得很赞
  • 回复于 2014-11-19 14:29 举报
    function($model){
        #coding....    get_type_text
    }
    
  • 回复于 2014-11-19 17:15 举报

    你那个第一种方法,,, 三种如何判断啊

  • 回复于 2014-11-19 17:51 举报

    @木初: return 的地方调用 方法啊

  • 回复于 2014-12-05 14:54 举报

    @infozr: 请教,在这个回调函数里如果想使用controller传递过来的变量,该怎么办啊,在函数内部使用controller传来的变量显示未定义。

    1 条回复
    回复于 2016-09-29 16:02 回复

    通过php5.3 的新特性, 使用 use 关键字, 可以将外部变量引入到闭包中, eg:

    functino ($model) use ($a, $b) {
        return $a . $b;
    }
    
    , , 觉得很赞
  • 回复于 2016-10-20 04:23 举报

    外部创建一个数组
    $typeList = [

    '1' => '待审核',
    '2' => '已审核',
    '3' => '未通过',
    

    ];

    在gridView的columns中:

            [
                'attribute' => 'type',
                'value'     => function($data) {
                    return $typeList[$data->type];
                },
            ],
    
    1 条回复
    回复于 2016-11-16 13:20 回复

    $data 哪里来的$model是什么?代表那个变量?

您需要登录后才可以回复。登录 | 立即注册