sakutarou’s blog

とりあえずWeb系技術をゆるく書いていく

CakePHP3のRouteクラス3種

CakePHP3でRouteクラスを利用してるのでしょうか? Router::scope などはよく使うのですが、 DashedRouteInflectedRouteRedirectRoute は頻繁には利用せず毎回調べてるので備忘録程度に残しておきます。

ようはどういうURLでアクセスするかというやつですね。

DashedRoute

特に気にしていない場合は、DashedRouteを利用していると思います。

  • アクセスするURL => /my-controller/my-action
  • クラス => MyController::myAction

InflectedRoute

CakePHP2までと同じようなURLでアクセスしたい場合はこちらですね

  • アクセスするURL => /my_controller/my_action
  • クラス => MyController::myAction

RedirectRoute

これは少し毛色の違うRouteです。
特定のURLにアクセスされたら、別ページにRedirectしたい場合があると思います。
RedirectRouteを使えばRouteだけでRedirect可能です。

  • アクセスするURL => /my-controller/my-action
  • アクセスしたいURL => http://example.com

使い方

routes.php に記述するだけです。

$routes->connect('/', ['redirect' => 'http://example.com'], ['routeClass' => 'RedirectRoute']);

その他

全体をInflectedRouteにしたい

デフォルトのRouteを指定する

Router::defaultRouteClass(InflectedRoute::class);