2014-12-08 2 views
7

Я создал флажок в качестве типа Boolean для хранения значений в качестве незагруженных - отмечен или не установлен. Проверено будет хранить 1 и бесконтрольно будет хранить 0.yii2: показать метку вместо значения для логического флажка.

Теперь я хочу показать этикетку как Да или Нет для значения 1 и 0 в грид-зрения и зрения. Как это можно достичь.

мой _form.php код подобен

$form->field($model, 'discharged')->checkBox(['label' => 'Discharged', 
'uncheck' => '0', 'checked' => '1']) 

Я попытался как

[ 
'attribute'=>'discharged', 
'value'=> ['checked'=>'Yes','unchecked=>'no'] 
], 

, но не похож на правильный синтаксис.

Спасибо.

ответ

10

Как arogachev сказал, вы должны использовать булеву форматировщик:

'discharged:boolean', 

http://www.yiiframework.com/doc-2.0/guide-output-formatter.html

http://www.yiiframework.com/doc-2.0/yii-i18n-formatter.html#asBoolean()-detail

Или вы могли бы добавить getDischargedLabel() функцию в вашей модели:

public function getDischargedLabel() 
{ 
    return $this->discharged ? 'Yes' : 'No'; 
} 

И в вашем gridview:

[ 
    'attribute'=>'discharged', 
    'value'=> 'dischargedLabel', 
], 
+0

Работает идеально. Большое спасибо. – Pawan

6

Первый вариант:

[ 
    'attribute' => 'discharged', 
    'format' => 'boolean', 
], 

или ярлык:

'discharged:boolean', 

Это не требует дополнительных методов в вашей модели и писать текстовые метки (он будет установлен автоматически в зависимости от язык в вашей конфигурации).

Подробнее here.

Второй вариант:

Вместо того, чтобы писать дополнительный метод в модели вы можете просто передать замыкание на value. Вы можете проверить информацию here.

[ 
    'attribute' => 'discharged', 
    'value' => function ($model) { 
     return $model->discharged ? 'Yes' : 'No'; 
    }, 
], 
+0

забыли булевое форматирование, +1 – soju

+0

@arogachev Это намного проще – Pawan

+0

да, и вам просто нужно «выписать: boolean» как определение столбцов – soju

2

Если вы последовательно отображать BOOLEANS одинаково в вашем приложении, вы можете также определить глобальную булево форматировщик:

$config = [ 
     'formatter' => [ 
      'class' => 'yii\i18n\Formatter', 
      'booleanFormat' => ['<span class="glyphicon glyphicon-remove"></span> no', '<span class="glyphicon glyphicon-ok"></span> Yes'], 
     ], 
    ]; 

Добавьте столбец:

'discharged:boolean', 
Смежные вопросы