yii2:显示标签而不是布尔复选框的值

Paw*_*wan 9 php yii2

我创建了一个复选框输入作为类型布尔值,用于将值存储为dishcharged - 已选中或未选中.Checked将存储1并且未选中将存储0.

现在我想在网格视图和视图中将值1和0 显示为是或否.怎么能实现这一点.

我的_form.php代码就像

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

我试过像

[
'attribute'=>'discharged',
'value'=> ['checked'=>'Yes','unchecked=>'no']
],
Run Code Online (Sandbox Code Playgroud)

但看起来不正确的语法.

谢谢.

soj*_*oju 12

正如arogachev所说,你应该使用boolean formatter:

'discharged:boolean',
Run Code Online (Sandbox Code Playgroud)

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';
}
Run Code Online (Sandbox Code Playgroud)

在你的gridview中:

[
    'attribute'=>'discharged',
    'value'=> 'dischargedLabel',
],
Run Code Online (Sandbox Code Playgroud)


aro*_*hev 8

第一种选择:

[
    'attribute' => 'discharged',
    'format' => 'boolean',
],
Run Code Online (Sandbox Code Playgroud)

或快捷方式:

'discharged:boolean',
Run Code Online (Sandbox Code Playgroud)

这不需要模型中的其他方法和编写文本标签(它将根据配置中的语言自动设置).

在这里查看更多细节.

第二种选择:

而不是在模型中编写其他方法,您只需将闭包传递给value.你可以在这里查看详情.

[
    'attribute' => 'discharged',
    'value' => function ($model) {
        return $model->discharged ? 'Yes' : 'No';
    },
],
Run Code Online (Sandbox Code Playgroud)

  • Pawan:你可以接受这个答案而不是我的答案:-) (3认同)