LoginSignup
1
0

More than 1 year has passed since last update.

CakePHP3のプレフィックスルーティングのURL生成

Posted at

概要

CakePHP3でプレフィックスルーティング(prefix routing)使用時、URLヘルパーから参照する方法です。どこにも情報がなかったので置いときます。

方法

ルーティング内容は以下の通りです。/api/v1/user/:uuidを定義しています。
注意点として、$routes->get()$routes->post()は無理でした。(検証不足かも)
また、['pass' => ['uuid'], 'hash' => '.+']の部分が必要です。(setPass, setPatternsでの定義も可)

routes.php
$routes->prefix('api', function(RouteBuilder $routes) {
    $routes->prefix('v1', function(RouteBuilder $routes) {
        $routes->connect('/user/:uuid', ['controller' => 'Users', 'action' => 'index'], ['pass' => ['uuid'], 'hash' => '.+']);
    }
}

生成方法は以下の通りです。ビューの場合は$this->Url->build()でも良いかと思います。
ここでは、'prefix' => 'api/v2'が必要です。CakePHP4ではパスカルケースで記述する必要があるかもしれません。(ApiV2かApi/V2かはわからない)

TestController.php
use Cake\Routing\Router;

$url = Router::url([
    'controller' => 'Users',
    'action' => 'index',
    'uuid1234',
    'prefix' => 'api/v2',
], true);

// $url -> 'http://localhost/api/v2/user/uuid1234'

ご参考になれば。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0