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

If statement 如何使用yii中bootstrap.widgets.TbGridView值中的if-else函数?,if-statement,yii,If Statement,Yii,我在yii framewoek集合的TBGridView中使用if-else函数 array( 'name'=>'tstatus', 'htmlOptions'=>array('width'=>'150px'), 'value'=>' if($data->tstatus==B2bTicket::UNACTIVATED){ $data->tstatus=="未

我在yii framewoek集合的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\u if)


如何解决此问题?

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

你可以使用一个一致的函数来完成这项工作

'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
你应该总是返回或回应一些东西

你好

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关键字使用此内容

(condition)?correct statements:fail statements

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

    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;
}

您是否尝试过像
($data->tstatus==B2bTicket::UNACTIVATED?…)
?tinybyte,为什么您认为这会起作用?这里的$data是什么?php会在数据提供程序之外识别它吗?此
$data
表示您的数据提供程序提供的每个项,请尝试,并阅读更多关于yii和php$data->tstatus==B2bTicket::UNACTIVATED中一致函数的信息。此语句将始终返回false,因为$data tstatus将为null。这是因为只有数据提供者知道$data。如果要引用$dataProviderwhy double=返回的$data,则必须使用逗号写入。这是您的问题
    /*
 * 转换订单的状态
 * @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;
}