ルートクラス

Posted by muchag | CakePHP 3.x | 2018-02-23 (金) 15:04:46

ルーティングルールを設定するクラス。
公式:ルーティング

【環境】
CakePHP: 3.5.8
php: 7.1.5
既存
/vendor/cakephp/cakephp/src/Routing/Route

この中にしまわれており、デフォルトで下記4クラスが存在する模様。

  1. DashedRoute
    1. 単語を -(ハイフン、ダッシュ)で連結
    2. URL:/my-controller/my-action
    3. 対応アクション:MyController::myAction
  2. InflectedRoute
    1. 単語を _(アンダースコア)で連結
    2. URL:/my_controller/my_action
    3. 対応アクション:MyController::myAction
  3. PluginShortRoute
  4. RedirectRoute
    1. 個別の URL に対してリダイレクトを設定
    2. パラメータを渡すことも可能
    3. 公式:ルーティング リダイレクトルーティング
カスタム

公式:ルーティング カスタムルートクラス
ここを見ると、自前のルートクラスを作成、設定可能みたい。

デフォルト

公式:ルーティング デフォルトルートクラス

デフォルトのルートクラスは、下記のように設定するみたい。

/config/routes.php

Router::defaultRouteClass(InflectedRoute::class);

実際に当該ファイルを覗いてみると、最初に記述されている。

フォールバックメソッド

公式:ルーティング フォールバックメソッド


$routes->fallbacks(DashedRoute::class);

// こんな書き方もある
$routes->fallbacks('DashedRoute');

このような記述を見かけるけど、上記公式の記事にも書いてあり
route.php にも記述されているように、
設定されていないルーティングに対する
デフォルトのルーティング設定を記述するショートカットメソッドとのこと。

実体

実際には、下記のように記述しているのと同じだそうな。


$routes->connect('/:controller', ['action' => 'index'], ['routeClass' => DashedRoute::class]);
$routes->connect('/:controller/:action/*', [], ['routeClass' => DashedRoute::class]);
デフォルト
/vendor/cakephp/cakephp/src/Routing/RouteBuilder.php

protected $_routeClass = 'Cake\Routing\Route\Route';

public function fallbacks($routeClass = null)
{
    $routeClass = $routeClass ?: $this->_routeClass;
    $this->connect('/:controller', ['action' => 'index'], compact('routeClass'));
    $this->connect('/:controller/:action/*', [], compact('routeClass'));
}

ということなので、デフォルトは Route クラスなのね~。

って、どういうことなのか。。。いずれのお楽しみ。。。

参考サイト

sakutarou’s blog:CakePHP3のRouteクラス3種(2016-12-05)

CakePHP 3.x | 2018-02-23 (金) 15:04:46 |

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment