OctoberCMS显示列表中的值而不是1而不可用而不是0

时间:2017-05-08 22:54:35

标签: php forms list octobercms

我在模型中有这个:

 fields.yaml
    special_offer:
        label: special_offer
        type: Switch
        default: true

DB字段是tinyint(1)

工作得很好!

但是我想在列表中显示不是0或1,但可用/不可用。 我可以存储字符串,但我更喜欢转换它。

这个访问者:

public function getSpecialOfferAttribute ($value){
        return ( $value === 1 ) ? 'available' : 'not available' ;
}

将在列表中显示,但在表单中显示错误,因为switch仅接受0/1

我该怎么做?

由于

1 个答案:

答案 0 :(得分:1)

您可以使用custom column type。在plugin.php文件中定义自定义列类型:

public function registerListColumnTypes()
{
    return [
        // Convert special offer values to text
        'special_offer' => function($value) {
            $map = [
                0 => 'not available',       
                1 => 'available',       
            ];
            return $map[$value];
        }
    ];
}

然后在列列定义文件中使用:

special_offer:
    label: Special offer
    type: special_offer