使用Cake的路由引擎将所有操作从fakeController
重新路由到controller1
的正确方法是什么?
我想重新路由行动index
以及任何其他行动和参数。
app/fake/
=> app/controller1/
app/fake/action1
=> app/controller1/action1
app/fake/action2/any/params
=> app/controller1/action2/any/params
只用一行代码就可以了吗?
为什么我这样做? - 因为在CakePHP 3中,路由区分大小写。我想保留我的控制器名称UpperCase,但如果我写app/Users/login
它会显示users
,它会产生usersController not found
之类的路径。如果有办法解决这个问题,我不需要所有这些重新路由。
答案 0 :(得分:1)
默认路由区分大小写,是的,但是默认情况下应该使用InflectedRoute
类定义回退,其行为与2.x相同,即它会将users
转换为{ {1}}(从3.1.0开始,默认值为Users
,它也会发生变化)。
<强> https://github.com/cakephp/app/blob/3.0.4/config/routes.php#L73 强>
如果您希望这是所有路线的默认行为(请注意,这相对较慢),只需通过DashedRoute
Router::defaultRouteClass()
<强> https://github.com/cakephp/app/blob/3.0.4/config/routes.php#L42 强>
或者为了将其限制在特定范围内,请使用Router::defaultRouteClass('InflectedRoute');
方法。
fallbacks()
<强> https://github.com/cakephp/app/blob/3.0.4/config/routes.php#L73 强>
或者,您可以为所有控制器创建适当的路径,类似于应用$routes->fallbacks('InflectedRoute');
文件中所示:
routes.php
<强> https://github.com/cakephp/app/blob/3.0.4/config/routes.php#L60-L62 强>
有关路由的详情,请参阅 Cookbook > Routing 。