值attr CGridView Yii中的条件语句

时间:2014-11-12 14:52:40

标签: php yii conditional-statements cgridview

当我在CgridView中执行此操作时:

'value' => '$data->status == 1 ? "Payed" : "None" ',

它有效,但当我这样做时:

'value' => 'if ($data->status == 1) { echo "Payed"; } else if($data->status == 2) { echo "Two"; } else { echo "None"; } '.

我需要做些什么来使工作成为第二个陈述,或者我需要如何重写它?

4 个答案:

答案 0 :(得分:3)

在以下情况下将您的语句转换为使用三元组:

'value' => '$data->status == 1 ? "Payed": ($data->status == 2 ? "Two" : "None")',

答案 1 :(得分:2)

您也可以使用函数来提供更多灵活性并使其更具可读性:

'value' => function($row, $data ) {
    if ($data->status == 1) { return "Payed"; } 
    else if($data->status == 2) { return "Two"; }
    else { return "None"; }
}

答案 2 :(得分:1)

以防万一:

我已尝试过topher的解决方案,我发现我必须像这样切换参数:

'value' => function($data, $row ) {
    if ($data->status == 1) { return "Payed"; } 
    else if($data->status == 2) { return "Two"; }
    else { return "None"; }
}

使用topher的解决方案$data->attribute_name无法正常工作,实际上是行而不是模型..

也许,如果你不需要$ row,请不要通过它。

答案 3 :(得分:0)

我的解决方案:

function checkStatus($status)
{
    if ($status == 1) {
        return "opl";
    } else if ($status == 2) {
        return "nal";
    } else {
        return "neopl";
    }
}

'value' => 'checkStatus($data->status)',

但你的意志也会奏效)我会接受答案)