CakePHP 3 - 在routes.php中重命名控制器

时间:2015-08-06 05:50:02

标签: url-routing cakephp-3.0

使用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之类的路径。如果有办法解决这个问题,我不需要所有这些重新路由。

1 个答案:

答案 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