2014-11-12 5 views
1

, когда я делаю это в CgridView:Состояние утверждение стоимости атр CGridView Yii

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

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

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

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

ответ

3

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

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

мое решение:

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

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

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

+0

Я бы использовал анонимную функцию, такую ​​как topher. Обычные функции не являются «Yii-way» – Dinistro

2

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

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

Только в случае, если:

Я попытался решение Тофер, и я обнаружил, что мне пришлось перейти из параметров, как, что:

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

С раствором Тофер в $data->attribute_name не работал и был, по сути, строка вместо модели.

Возможно, если вам не нужна строка $ row, не передавайте ее.

 Смежные вопросы

  • Нет связанных вопросов^_^