October CMSの一覧画面で、数値の値を変換する

October CMSの一覧画面で、DBに登録されている数値をそのまま表示せず、値を変換して表示するようにします。

やりたいこと

DBに登録されているstatusの値が、1  だったら 「受付中」、2 だったら「受付完了」、9だったら「エラー」と、一覧に表示する。

環境

  • Laravel:5.5
  • October CMS:1.0

実装

1.lang.phpに定義を追加します。

return [
    'db' => [
        'status' => [
           '1' => '受付中',
           '2' => '受付完了',
           '9' => 'エラー',
        ],
     ],
]

 

2.columns.yamlのtypeに任意の値を設定します。

  status:
    label: XXXXXXXX
    type: status_list // ←任意の値

 

3.Plugin.phpに関数を追加

下記の関数を追加します。

・registerListColumnTypes()

・statusListColumn($value, $column, $record)

    public function registerListColumnTypes()
    {
        return [
            'status_list' => [$this, 'statusListColumn'], // キーはcolumns.yamlで指定した値
        ];
    }

    // ステータス区分
    // 関数名は上記で追加した値
    public function statusListColumn($value, $column, $record)
    {
        return Lang::get('xxxxx::lang.db.status')[$value];
    }

これで一覧に変換された値が表示されます。

※補足

下記でも変換して表示されますが、columns.yamlファイルに値を記載するため、1箇所の定義だけで表示できないかと思い、上記の方法を探しました。

columns.yaml

  status:
    label: XXXXXXXX
    select:
      case xxxx.status
      when 1 then '受付中'
      when 2 then '受付完了'
      when 9 then 'エラー'
      end

 


--------------------------
システム開発のご要望・ご相談はこちらから

コメントを残す

メールアドレスが公開されることはありません。