Оператор условия в значении attr CGridView Yii

когда я делаю это в CgridView:

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

это работает, но когда я делаю это:

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

Что мне нужно сделать, чтобы заставить работать второе утверждение, или как мне нужно переписать его?

2

Решение

Преобразуйте ваше заявление, чтобы использовать троичный, если:

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

Другие решения

Вместо этого вы могли бы также использовать функцию, чтобы дать немного больше гибкости и сделать ее более читабельной:

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

Так, на всякий случай :

Я попробовал решение Topher и обнаружил, что мне нужно переключить param следующим образом:

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, не передавайте его.

1

мое решение:

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

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

Но твоя тоже будет работать) Я приму ответ)

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector