cakephp 3前缀路由

时间:2015-03-25 13:09:21

标签: php cakephp-3.0 cakephp-routing

我试图在cakephp 3中设置一个路由前缀,所以任何以/ json /开头的URL都会获得前缀密钥集,我可以在app控制器中相应地更改布局。除此之外,他们应该使用通常的控制器和动作。我已将以下内容添加到routes.php

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

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

  

错误:在文件中创建下面的UsersController类:   SRC /控制器/的Json / UsersController.php

而我希望它使用

  

SRC /控制器/ UsersController.php

我认为这应该是可能的,但在查阅本书时我无法清楚地看到我做错了什么。部分基于我的代码:CakePHP3.x controller name in url when using prefix routing

提前多多感谢

2 个答案:

答案 0 :(得分:1)

这就是前缀路由现在如何在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组件支持开箱即用的布局/模板切换,所以也许你应该尝试一下。

答案 1 :(得分:0)

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

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