更改DetailView小部件中属性的值

时间:2015-02-03 13:23:33

标签: yii2 detailview

我有一个名为Play的表,我在Yii2详细视图小部件中显示每条记录的详细信息。我在该表recurring中有一个属性,类型为tinyint,它可以是0或1.但我不想将其视为数字,而是要显示yes或{ {1}}基于值(0或1)。

我正在尝试使用detailview小部件中的函数更改它但我收到错误:no

我的详细视图代码:

Object of class Closure could not be converted to string

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:15)

与处理一组模型的GridView不同,DetailView只处理一个模型。因此不需要使用闭包,因为$model是唯一一个用于显示的模型,并且在视图中可用作变量。

您绝对可以使用 rkm 建议的solution,但还有更简单的选项。

顺便说一句,您可以简化条件,因为允许的值只有01

'value' => $model->recurring ? 'yes' : 'no'

如果您只想将值显示为布尔值,则可以使用冒号:

添加格式化程序后缀
'recurring:boolean',

'format' => 'raw'在这里是多余的,因为它只是没有html的文本。

如果您想添加更多选项,可以使用:

[
    'attribute' => 'recurring',
    'format' => 'boolean',    
    // Other options
],

使用formatter是一种更灵活的方法,因为这些标签将根据config中设置的应用程序语言生成。

官方文件:

另请参阅this question,它与您的非常相似。

答案 1 :(得分:13)

尝试

'value' => $model->recurring == 1 ? 'yes' : 'no'