概要
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'
ご参考になれば。