我有一个名为Play的表,我在Yii2详细视图小部件中显示每条记录的详细信息。我在该表recurring
中有一个属性,类型为tinyint,它可以是0或1.但我不想将其视为数字,而是要显示yes
或{ {1}}基于值(0或1)。
我正在尝试使用detailview小部件中的函数更改它但我收到错误:no
我的详细视图代码:
Object of class Closure could not be converted to string
任何帮助将不胜感激!
答案 0 :(得分:15)
与处理一组模型的GridView
不同,DetailView
只处理一个模型。因此不需要使用闭包,因为$model
是唯一一个用于显示的模型,并且在视图中可用作变量。
您绝对可以使用 rkm 建议的solution,但还有更简单的选项。
顺便说一句,您可以简化条件,因为允许的值只有0
和1
:
'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'