CakePHP 3 Routingの_name オプション が便利すぎる。

CakePHP 3 Routingの_name オプション が便利すぎる。

どうもfujiharaです。
本日で1年の4分の3が終わったわけですが早くないですか?
昨年の日本のハロウィンがーーって話がつい最近の気がしてなりません。

本日はCakePHP 3 の新しいRoutingで凄い便利だったものをご紹介致します。

Routing

抜粋:ルーティングは URL をどコントローラーのアクションと関連付けてマッピングするか決める機能です。


ルーティングより抜粋

例えば /login にアクセスが有った場合にAccountsコントローラのloginメソッドを実行するなどの指定が可能です。 CakePHP2 の場合は以下のように設定していました。

//CakePHP2の場合
Router::connect(
    '/login',
    ['controller' => 'accounts', 'action' => 'login'],
    [] //option
);

CakePHP3の場合も基本的な形は同じですが、ここで超便利なオプション_nameが指定できます。

Router::connect(
    '/login',
    ['controller' => 'Accounts', 'action' => 'login'],
    ['_name' => 'login'] 
);

こうするとビューテンプレート内でリンクを表示する際にすごく便利です。

//CakePHP2 の場合
$this->Html->link('ログイン', ['controller' => 'accounts', 'action' => 'login']);

//CakePHP3 の場合
$this->Html->link('ログイン', ['_name' => 'login']);

以下テストです

## tests/TestCase/Route/RouteTest.php

    public function testNameRouting()
    {
        $this->assertEquals('login', Router::url(['_name' => 'login']));
    }

まとめ

いかがでしたでしょうか、すごく便利じゃないですか?
またCakePHP2の書き方で表示されたリンクでは controller や action の名前が 間違っていたとしてもリンク自体は表示されており、リンクをクリックして間違いに気づく。と言った感じでした。
しかし、CakePHP3の_nameを使用した際は、_nameの値が間違っていると表示時にエラーが発生しますので、 ミスに気づくやすくなりました。
皆さんも是非お試しください。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ