如何在yii中的bootstrap.widgets.TbGridView的值中使用if else函数?

时间:2014-02-20 03:32:15

标签: if-statement yii

我在yii framewoek set中的TBGridView中使用if else函数,

array(
        'name'=>'tstatus',
        'htmlOptions'=>array('width'=>'150px'),
        'value'=>'
            if($data->tstatus==B2bTicket::UNACTIVATED){
                $data->tstatus=="未激活";
            }elseif($data->tstatus==B2bTicket::YUYUE_PROCESSING){
                $data->tstatus=="预约处理中,可取消";
            }elseif($data->tstatus==B2bTicket::YUYUE_CONFIRM){
                $data->tstatus=="预约确认,电话取消";
            }elseif($data->tstatus==B2bTicket::FINISHED){
                $data->tstatus=="体检完成";
            }else{
                $data->tstatus=="取消预约";
            }',
        'filter'=>CHtml::dropDownList('B2bTicket[tstatus]',$model->tstatus,  
            array(
                ''=>'全部',
                B2bTicket::UNACTIVATED=>'未激活',
                B2bTicket::YUYUE_PROCESSING=>'预约处理中,可取消',
                B2bTicket::YUYUE_CONFIRM=>'预约确认,电话取消',
                B2bTicket::FINISHED=>'体检完成',
                B2bTicket::YUYUE_CANCEL=>'取消预约',
            )
        ),

    ),

但是发生了错误:rse错误:语法错误,中的意外'if'(T_IF)

    D:\xampp\htdocs\marvel_b2b\sources\trunk\web\protected\framework
\base\CComponent.php(606) : eval()'d code on line 2

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

如果我理解正确,通过分配==,您应该使用单=

你可以使用一致的功能来完成这项工作

'value' => function($data){

    $msg = '';
    if($data->tstatus==B2bTicket::UNACTIVATED){
        $msg ="未激活";
    }elseif($data->tstatus==B2bTicket::YUYUE_PROCESSING){
        $msg ="预约处理中,可取消";
    }elseif($data->tstatus==B2bTicket::YUYUE_CONFIRM){
        $msg ="预约确认,电话取消";
    }elseif($data->tstatus==B2bTicket::FINISHED){
        $msg ="体检完成";
    }else{
        $msg ="取消预约";
    }
    return $msg; // show what's going into table cell

},
'htmlOptions'=>array('style'=>'width: 150px'), // also fix this
'type' => 'raw', // or html

你应该总是回复或回应一些东西

美好的一天

答案 1 :(得分:0)

array(
    'name'=>'tstatus',
    'htmlOptions'=>array('width'=>'150px'),
    'value'=>'
        ($data->tstatus==B2bTicket::UNACTIVATED)?
            $data->tstatus=="未激活":
        ($data->tstatus==B2bTicket::YUYUE_PROCESSING)?
            $data->tstatus=="预约处理中,可取消":
        ($data->tstatus==B2bTicket::YUYUE_CONFIRM)?
            $data->tstatus=="预约确认,电话取消":
        ($data->tstatus==B2bTicket::FINISHED)?
            $data->tstatus=="体检完成"":$data->tstatus=="取消预约")))))
        ',
    'filter'=>CHtml::dropDownList('B2bTicket[tstatus]',$model->tstatus,  
        array(
            ''=>'全部',
            B2bTicket::UNACTIVATED=>'未激活',
            B2bTicket::YUYUE_PROCESSING=>'预约处理中,可取消',
            B2bTicket::YUYUE_CONFIRM=>'预约确认,电话取消',
            B2bTicket::FINISHED=>'体检完成',
            B2bTicket::YUYUE_CANCEL=>'取消预约',
        )
    ),

),

不要使用gridview上的if关键字使用此contion

(condition)?correct statements:fail statements

答案 2 :(得分:0)

我已经解决了这个问题,只需将该函数命名为以下函数:

    array(
        'name'=>'tstatus',
        'htmlOptions'=>array('width'=>'150px'),
        'value'=>"B2bTicket::getStatusDesc($model->tstatus)",
        'filter'=>CHtml::dropDownList('B2bTicket[tstatus]',$model->tstatus,  
            array(
                ''=>'全部',
                B2bTicket::UNACTIVATED=>'未激活',
                B2bTicket::YUYUE_PROCESSING=>'预约处理中,可取消',
                B2bTicket::YUYUE_CONFIRM=>'预约确认,电话取消',
                B2bTicket::FINISHED=>'体检完成',
                B2bTicket::YUYUE_CANCEL=>'取消预约',
            )
        ),
    ),

并在模型中命名一个函数

    /*
 * 转换订单的状态
 * @param $tstatus 
 * return 状态描述
 */
static function getStatusDesc($tstatus="")
{
    switch($tstatus){
        case $tstatus==B2bTicket::UNACTIVATED:
            $tstatus="未激活";
            break;
        case $tstatus==B2bTicket::YUYUE_PROCESSING:
            $tstatus="预约处理中,可取消";
            break;
        case $tstatus==B2bTicket::YUYUE_CONFIRM:
            $tstatus="预约确认,电话取消";
            break;
        case $tstatus==B2bTicket::FINISHED:
            $tstatus="体检完成";
            break;
        case $tstatus==B2bTicket::YUYUE_CANCEL:
            $tstatus="体检完成";
            break;

    }
    return $tstatus;
}