Changing value of an attribute in DetailView widget

前端 未结 2 1031
天涯浪人
天涯浪人 2020-12-03 18:46

I have a table named Play and I\'m showing details of each record in Yii2 detail view widget. I have an attribute in that table recurring which is of type tinyi

相关标签:
2条回答
  • 2020-12-03 19:04

    Try

    'value' => $model->recurring == 1 ? 'yes' : 'no'
    
    0 讨论(0)
  • 2020-12-03 19:12

    Unlike GridView which processes a set of models, DetailView processes just one. So there is no need for using closure since $model is the only one model for display and available in view as variable.

    You can definitely use solution suggested by rkm, but there is more simple option.

    By the way you can simplify condition a bit since the allowed values are only 0 and 1:

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

    If you only want to display value as boolean, you can add formatter suffix with colon:

    'recurring:boolean',
    

    'format' => 'raw' is redundant here because it's just text without html.

    If you want add more options, you can use this:

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

    Using formatter is more flexible approach because these labels will be generated depending on application language set in config.

    Official documentation:

    • DetailView $attributes property

    • Formatter class

    • Formatter asBoolean() method

    See also this question, it's quite similar to yours.

    0 讨论(0)
提交回复
热议问题