cakephperの日記(CakePHP, MongoDB) Twitter

2012-02-03

CakePHP2用の自動フォルダ探索プラグイン

CakePHP1では、ControllerやModel以下のphpファイルを階層化するために、その中にフォルダを作って入れても動くのですが、CakePHP2からは自動探索しなくなりました。


例えば、下記のように複数フォルダに分けてファイル管理する場合、

app/Contoroller/Admin/AdminController.php
app/Contoroller/User/UserController.php

CakePHP2では下記のように、bootstrap.phpでApp::build()を使って全てのフォルダを指定しないといけません。

App::build(array(
    'Controller' => array(
        '/app/Contoroller/Admin/', 
        '/app/Contoroller/User/'
    )
));

これってフォルダが増えるたびに定義を増やしていかないといけないので、この処理を自動的に行うプラグインを開発しました。現在はControllerとModelフォルダ以下を探索します。

AutoAppBuild for CakePHP 2.x

https://github.com/ichikaway/AutoAppBuild


インストール方法

gitからプラグインダウンロードして、下記のように配置します。

app/Plugin/AutoAppBuild

次に、app/Config/bootstrap.phpに下記を記述します。

CakePlugin::load(array('AutoAppBuild' => array('bootstrap' => true)));

これだけです。

本番環境では自動探索じゃなくて、App::build()で定義しておきたいのであれば、

AutoAppBuild::dump();

を実行すると、コピー&ペースト用のApp::build()パスをダンプ出力します。

CakePHP2からプラグインのbootstrapとroutesが読み込める

app/Config/bootstrap.phpで下記のようにすると読み込めます。

CakePlugin::loadAll(array(
     'FooPlugin' => array('bootstrap' => true, 'routes' => true),
));

詳細は下記。

http://book.cakephp.org/2.0/en/plugins.html