CakePHPのルーティングについては、「CakePHP 3.8 Red Velvet Cookbook」に詳細が書かれているため、こまめにアクセスし参考にさせていただいています。ここでは復習のため実際にCakePHPで設定を変更し表示を試してみました。
「ルーティング」を設定することで、トップページで表示させるコントローラー、ビューの指定やその階層下の表示を複数設定することが可能です。設定を間違えてもデバックモードであればエラー画面で叱られますので、どこを直せばよいのかすぐに解ります。
ルーティング設定ファイルの場所
/config/routes.php
CakePHPをインストールするとデフォルトで用意されているルーティング設定
下記デフォルトの設定で’/’ (基本のパス)にアクセスすると、’/src/Controller/PagesController.php’内の’function display()’(displayアクションメソッド)にアクセス。ビューは’/src/Template/Pages/home.ctp’を表示します。
$routes->connect(‘/’, [‘controller’ => ‘Pages’, ‘action’ => ‘display’, ‘home’]);
デフォルトからオリジナルの設定に変更するケース
下記の設定で’/’ (基本のパス)にアクセスすると、トップページでは’ShopsController.php’の内容を表示します。具体的には、’/src/Controller/ShopsController.php’内の’function index()’(indexアクションメソッド)にアクセス。ビューは’/src/Template/Shops/index.ctp’を表示します。
$routes->connect(‘/’,[‘controller’ => ‘Shops’, ‘action’ => ‘index’]);
トップ以外の階層を追加するケース
設定例1
下記の設定では’/login/’というパスにアクセスした場合、’LoginController.php’内の’function login()’(loginアクションメソッド)にアクセスし、ビューの’/src/Template/Login/login.ctp’を表示します。
$routes->connect(‘/login/’, ‘Login::login’);
設定例2
下記の設定では、’/shops/rockmusic/’というパスにアクセスした場合、’ShopsController.php’内の’function view()’(viewアクションメソッド)にアクセスし、ビューの’/src/Template/Shops/view.ctp’を表示します。
$routes->connect(‘/shops/rockmusic/*’, ‘Shops::view’);