我试图在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
提前多多感谢
答案 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')
});