ver4/baserCMSのCakePHP拡張について
提供: baserCMS公式ガイド
[このコンテンツは内容調整中です]
baserCMS は、基本的に従来のCakePHPの開発手法と同様の手法にて開発が可能ですが、独自に拡張を行っている部分もあります。 ここでは、その拡張された内容についてご説明します。
BaserEvent
CakePHP による実装 CakeEvent の baserCMS による拡張です。
CakeEvent では、CakeEventListener インターフェイスにより、implementedEvents というメソッドを実装する事でイベントを登録する仕組みとなっていますが、プログラミング知識のない方には少し敷居が高く、EventListenerの設計も手軽なものではありませんでした。
baserCMSでは、決まった命名規則で決まったディレクトリにクラスを作成し、クラス内にコールバックメソッドを定義するだけで簡単にイベント登録できる仕組みが用意されています。
また、beforeRender 、beforeFind など、コントローラーごと、モデルごとにイベントを発動するよう拡張されています。
これにより、ピンポイントでコントローラーやモデルを指定してイベント登録を行う事ができます。
※ 現在(baserCMS3.0.0)はプラグインのみ対応しています。
詳しくは、プラグインイベントを参照してください。
ビューファイルのサブフォルダ化
一つのコントローラーで利用するビューファイルが増えてくると管理も大変になってきます。
baserCMSでは、管理画面等のプレフィックスルーティングを行った場合に、自動でサブフォルダを参照する仕組みとなっています。
(例)UsersController の admin_index メソッド用のビューファイル CakePHP・・・{Viewディレクトリ}/users/admin_index.ctp baserCMS・・・{Viewディレクトリ}/users/admin/index.ctp
BcBaserHelper拡張
CakePHPにおいて、新しいヘルパをビューで利用する場合、コントローラーにヘルパを追加する必要があるのですが、コントローラーをカスタマイズせずに、ヘルパの機能を追加したい場合があります。
例えば、ページ編集画面で利用できるヘルパーをプラグインとして増やしたい場合は、新しいヘルパーをプラグインの中に梱包し、PagesControllerにそのヘルパーを定義する必要があります。この時baserディレクトリ内のPagesControllerを編集してしまえば、baserCMSのアップデートの際、上書きされてしまいます。かと言って、PagesControllerをカスタマイズする為に、app/Controllerに配置する前提であると、利用者は不便になってしまいます。
そこで、baserCMSでは、既に存在する「BcBaserHelper」を拡張する仕組みを持っています。
プラグインのヘルパーフォルダ内に次の命名規則でヘルパーファイルを設置すると、BcBaserHelperのインスタンスを通して呼び出す事ができます。
● {プラグイン名}BaserHelper {baserCMSの設置フォルダ}/app/Plugin/{プラグイン名}/View/Helper/{プラグイン名}BaserHelper.php
この場合、上記ヘルパに test というメソッドを実装すれば、ページ編集画面内で次のように呼び出す事ができます。
<?php $this->BcBaser->test() ?>
これは、ページ管理では、BcBaserHelperが読み込まれる前提となっており、それを利用している事になります。
(ちなみに、これは、CakePHPの仕様である、BehaviorがModelを拡張する仕組みと同じです)