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