cakephp 3前缀路由

cakephp 3 prefix routing

我正在尝试在 cakephp 3 中设置路由前缀,以便任何以 /json/ 开头的 URLs 获取前缀键集,我可以在应用程序中相应地更改布局控制器。除此之外,他们应该使用通常的控制器和动作。我已将以下内容添加到 routes.php

$routes->prefix('json', function($routes) {
    $routes->connect(
        '/:controller/:action/*',
        [],
        ['routeClass' => 'InflectedRoute']
    );
});

我想将所有带有 json 作为第一个 url 段的请求定向到第二个 url 段中指定的控制器。例如/json/users/add_account_type/ 转到用户控制器。但是,当访问此 URL 时,我收到消息:

Error: Create the class UsersController below in file: src/Controller/Json/UsersController.php

而我希望它使用

src/Controller/UsersController.php

我认为这应该是可能的,但我在查阅这本书时不太明白我做错了什么。我的代码部分基于:CakePHP3.x controller name in url when using prefix routing

非常感谢

这就是前缀路由现在在 3.x 中的工作方式,正如文档中所解释的那样,前缀被映射到子命名空间,从而将子文件夹中的控制器分开。

http://book.cakephp.org/3.0/en/development/routing.html#prefix-routing

如果您想更改该行为(我真的不明白为什么),一种方法是实施自定义 ControllerFactory 调度程序过滤器。

http://book.cakephp.org/3.0/en/development/dispatch-filters.html

附带说明一下,RequestHandler 组件支持 layout/template 开箱即用,所以也许您应该试一试。

前缀路由是一种将部分路由命名空间到专用控制器的方法。看来你想要的是范围而不是前缀,对于你描述的内容:

Router::scope('/json', function($routes) {
    $routes->fallbacks('InfledtedRoute')
});