当我在CgridView中执行此操作时:
'value' => '$data->status == 1 ? "Payed" : "None" ',
它有效,但是当我这样做时:
'value' => 'if ($data->status == 1) { echo "Payed"; } else if($data->status == 2) { echo "Two"; } else { echo "None"; } '.
我需要做些什么来使工作成为第二个陈述,或者我需要如何重写它?
如果出现以下情况,请将语句转换为使用三元
'value' => '$data->status == 1 ? "Payed": ($data->status == 2 ? "Two" : "None")',
您也可以使用函数来提供更多灵活性并使其更具可读性:
'value' => function($row, $data ) {
if ($data->status == 1) { return "Payed"; }
else if($data->status == 2) { return "Two"; }
else { return "None"; }
}
以防万一 :
我尝试过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,不要传递它。
我的解决方案
function checkStatus($status)
{
if ($status == 1) {
return "opl";
} else if ($status == 2) {
return "nal";
} else {
return "neopl";
}
}
'value' => 'checkStatus($data->status)',
但你的意志也会奏效)我会接受答案)