CakePHP2では GitHub - k1LoW/Enumm: Enumm: Enum(model) plugin for CakePHP を作って使っていたのですが、CakePHP3では動きません。
CakePHP3で使える同じようなPluginを探して、CakeDC/Enum を見つけたのですが、CONSTベースとConfigureベース、データベースのテーブルベースしかありませんでした。
というわけで、Enummと同じようにプロパティベースで動くようにCakeDC/Enumにストラテジを追加する形でPropertyEnumを作りました。
使い方
Tableに $enums
プロパティを設定して、 ['strategy' => 'property']
することでCakeDC/Enumの他のストラテジと同じように利用可能です。
<?php class ArticlesTable extends Table { public $enums = [ 'status' => [ 'public' = 'Published'; 'draft' = 'Drafted'; 'archive' = 'Archived'; ], ]; public function initialize(array $config) { $this->addBehavior('PropertyEnum.Enum', ['lists' => [ 'status' => [ 'strategy' => 'property', ] ]]); } }
AutoSetComponent
Enummの時と同様に $enums
をViewに自動でsetしたいときは PropertyEnum\AutoSetComponent
を読み込むことで可能です。
<?php namespace App\Controller; class AppController extends Controller { public function initialize() { parent::initialize(); $this->loadComponent('PropertyEnum.AutoSet'); } }
というわけで
CakePHP3でも気楽にEmunを使えるようになりました。