【问题标题】:OctoberCMS show value in list available instead of 1 and unavailable instead of 0OctoberCMS 在列表中显示值可用而不是 1 和不可用而不是 0
【发布时间】:2017-10-07 02:15:49
【问题描述】:

我在模型中有这个:

 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

我该怎么做?

谢谢

【问题讨论】:

    标签: php forms list octobercms


    【解决方案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
    

    【讨论】:

    • 这是否意味着我不能使用现有类型来做到这一点?我只是想使用 switch ((
    • 如果您想要自定义翻译,那么我认为您别无选择。该开关使用翻译字符串backend::lang.list.column_switch_truebackend::lang.list.column_switch_false
    • 伤心!写在十月的论坛,希望能从那里得到答案)谢谢
    • 但是,您仍然可以使用 fields.yaml 上的开关,并且只更新该文件的用途的 columns.yaml
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多