ここではCakePHP2.x系のコントローラーをフォルダに分ける方法を解説していきます。

今回は例として
/app/Controller/admin/
/app/Controller/front/
と管理画面用コントローラーとフロント用コントローラーに分けていきます。
bootstrap.phpを編集
/app/Config/bootstrap.php
if (preg_match('/admin/', $_SERVER['REQUEST_URI'])) {
App::build(array(
'Controller' => array(ROOT.DS.APP_DIR.DS.'Controller'.DS.'admin'.DS),
));
}
else {
App::build(array(
'Controller' => array(ROOT.DS.APP_DIR.DS.'Controller'.DS.'front'.DS),
));
}
$_SERVER[‘REQUEST_URI’]でアクセスがあったURLで管理画面かフロントかを分けています。
URLのルーティング
/app/Config/routes.php
Router::connect('/admin/', array('controller' => 'Index', 'action' => 'index'));
Router::connect('/admin/top/', array('controller' => 'Top', 'action' => 'index'));
http://www.example.com/admin/とアクセスするとadminフォルダのIndexControllerのindexメソッドが呼ばれます。
※アクション名がindexなら’action’ => ‘index’を省略できます。
constファイル作成
/app/Config/bootstrap.phpの最後にconfig(‘const’);を記入してください。
const.phpを作成
/app/Config/const.php
<?php
/** プロジェクト名 **/
if (preg_match('/projectname/', $_SERVER['REQUEST_URI'])) {
define('PROJECT', '/projectname');
}
else {
define('PROJECT', null);
}
// 管理画面
if (preg_match('/admin/', $_SERVER['REQUEST_URI'])) {
define('SITE_URL', PROJECT . '/admin/');
/** ログイン画面 **/
define('INDEX', SITE_URL);
/** TOP画面 **/
define('TOP', SITE_URL . 'top/');
}
// フロント
else {
define('SITE_URL', PROJECT . '/');
define('INDEX', SITE_URL);
}
これでルーティングされた独自定数の定義が完了。
$this->request->hereと同じ扱いで使用できます。
