Prefixルーティング
開発環境:CakePHP2.5.1
管理画面などで/admin/users/edit/5のようなURLでUsersコントローラーのeditアクションを使いたい場合にPrefixルーティングを活用します。
Routing.prefixesを有効にする
まずは、app/Config/core.php内のRouting.prefixesのコメントを外します。
<?php Configure::write('Routing.prefixes', array('admin')); ?>
今回はadminというprefixを使うのでそのままにしますが、他の指定や複数指定もすることができます。
コントローラーにアクションを追加
次にUsersコントローラーにeditアクションを追加します。
その際、通常であればeditアクションですが、ルーティングを使うので、admin_editアクションを作成します。
<?php function admin_edit() { } ?>
また、それに合わせてビューはadmin_edit.ctpファイルを作成します。
管理画面にアクセス
以上の設定で、/admin/users/edit/5にアクセスすると、正常に表示されます。
Usersコントローラー内に他のアクションを追加することで、一通り問題なく動作するのですが、/adminにアクセスした時に問題が発生します。
/adminの場合のみapp/Config/routes.phpに別のルーティング設定をする必要があります。
<?php Router::connect('/admin', array('controller' => 'users', 'action' => 'index', 'admin' => true)); ?>
このように設定すると、/adminにアクセスするとUsersコントローラーのadmin_indexアクションが呼び出されます。