Prefixルーティング
開発環境:CakePHP2.5.1
管理画面などで/admin/users/edit/5のようなURLでUsersコントローラーのeditアクションを使いたい場合にPrefixルーティングを活用します。
Routing.prefixesを有効にする
まずは、app/Config/core.php内のRouting.prefixesのコメントを外します。
1 |
<?php Configure::write('Routing.prefixes', array('admin')); ?> |
今回はadminというprefixを使うのでそのままにしますが、他の指定や複数指定もすることができます。
コントローラーにアクションを追加
次にUsersコントローラーにeditアクションを追加します。
その際、通常であればeditアクションですが、ルーティングを使うので、admin_editアクションを作成します。
1 2 3 4 |
<?php function admin_edit() { } ?> |
また、それに合わせてビューはadmin_edit.ctpファイルを作成します。
管理画面にアクセス
以上の設定で、/admin/users/edit/5にアクセスすると、正常に表示されます。
Usersコントローラー内に他のアクションを追加することで、一通り問題なく動作するのですが、/adminにアクセスした時に問題が発生します。
/adminの場合のみapp/Config/routes.phpに別のルーティング設定をする必要があります。
1 |
<?php Router::connect('/admin', array('controller' => 'users', 'action' => 'index', 'admin' => true)); ?> |
このように設定すると、/adminにアクセスするとUsersコントローラーのadmin_indexアクションが呼び出されます。
柴田 篤志
最新記事 by 柴田 篤志 (全て見る)
- WordPressとCakePHPの共存 - 2014年10月22日
- サイトマップの作成方法 - 2014年10月12日
- INSERTしたIDを取得する - 2014年10月4日