過去にやったやつの CakePHP3 版です。
同じように Paginator のような Component と Helper を自作します。 CakePHP2 のときと比べてシンプルでわかりやすくなってると思います。
- CakePHP 3.6.7
Component が呼ばれたら Helper も自動で呼ぶ
CakePHP2 のときと大きく変わることはないです。
initialize()
に記述します。
<?php class SampleComponent extends Component { public function initialize(array $config) { // Controller を取得 $controller = $this->_registry->getController(); // SampleHelper の追加 $controller->helpers += ['Sample']; } }
Helper で Component の設定を使えるようにする
CakePHP3 では配列の操作時にデフォルト値をマージしておくことを推奨しているので、これに則ります。
配列を操作する際、 empty チェックを使うよりも、デフォルト値をマージする方が良いです。 デフォルト値をマージすることによって、必要なキーが定義されることを保証できます。
Helper の追加と同様に、initialize()
に記述します。
<?php class SampleComponent extends Component { // 設定のデフォルト protected $defaultSettings = [ 'property' => true, ]; // 設定 protected $settings = []; public function initialize(array $config) { // Controller を取得 $controller = $this->_registry->getController(); // SampleHelper の追加 $controller->helpers += ['Sample']; // デフォルト設定のマージ $this->settings = $controller->sampleSettings + $this->defaultSettings; // 設定を Helper で利用するために request に設定する $controller->setRequest($controller->request->withParam('SampleSetting', $this->settings)); } }
Helper では以下のように設定を取得します。
<?php class SampleHelper extends Helper { // 設定 protected $settings = []; public function initialize(array $config) { // Component で設定した設定情報を取得 $this->settings = $this->request->getParam('SampleSetting'); } }