Yii2 更改DetailView小部件中属性的值

Yii2 更改DetailView小部件中属性的值,yii2,detailview,Yii2,Detailview,我有一个名为Play的表,我将在Yii2细节视图小部件中显示每个记录的详细信息。我在该表中有一个类型为tinyint的属性recurtive,它可以是0或1。但我不想将其视为数字,而是希望根据值(0或1)显示yes或no 我试图用detailview小部件中的一个函数来改变这一点,但我得到了一个错误:类闭包的对象无法转换为字符串 我的详细视图代码: <?= DetailView::widget([ 'model' => $model, 'attributes' =&

我有一个名为Play的表,我将在Yii2细节视图小部件中显示每个记录的详细信息。我在该表中有一个类型为tinyint的属性
recurtive
,它可以是0或1。但我不想将其视为数字,而是希望根据值(0或1)显示
yes
no

我试图用detailview小部件中的一个函数来改变这一点,但我得到了一个错误:
类闭包的对象无法转换为字符串

我的详细视图代码:

 <?= DetailView::widget([
    'model' => $model,
    'attributes' => [
        'name',
        'max_people_count',
        'type',
        [
             'attribute' => 'recurring',
             'format'=>'raw',
             'value'=> function ($model) {
                        if($model->recurring == 1)
                        {

                            return 'yes';

                        } 
                        else {
                        return 'no';
                        }
                      },
        ],
        'day',
        'time',
        ...
试试看


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

您当然可以使用rkm建议的,但有更简单的选项

顺便说一下,您可以稍微简化条件,因为允许的值只有
0
1

'value' => $model->recurring ? 'yes' : 'no'
如果只想将值显示为布尔值,则可以添加带冒号的格式化程序后缀:

'recurring:boolean',
“格式”=>“原始”
在这里是多余的,因为它只是没有html的文本

如果要添加更多选项,可以使用以下选项:

[
    'attribute' => 'recurring',
    'format' => 'boolean',    
    // Other options
],
使用格式化程序是更灵活的方法,因为这些标签将根据配置中设置的应用程序语言生成

正式文件:


另请参见,它与您的非常相似。

这也非常有用,因为我将用多种语言制作此应用程序,谢谢!摘自一个类似的问题:
[
    'attribute' => 'recurring',
    'format' => 'boolean',    
    // Other options
],