CakePHP - 在 URL 中更改控制器名称

CakePHP - Change Controller name in URL

我有一个用 CakePHP 2.2.3 构建的遗留应用程序

应用程序的一部分具有名为 SymposiumsController.php 的控制器文件。这导致 URL,例如:

domain.com/symposiums
domain.com/symposiums/view/23

问题是 'symposiums' 不是一个真正的(英语)单词;应该是 'symposia'.

我想重命名我的 URL,所以它们是这样的:
domain.com/symposia
domain.com/symposia/view/23

我试图通过编辑 app/Config/Routes.php 来做到这一点:

Router::connect('symposia/:action', array('controller' => 'symposiums'));

然而,所有这些所做的只是将 domain.com/symposia 重定向到 domain.com/symposiums,因此这对用户在 URL.

中看到的内容没有影响

简而言之,我不希望 'symposiums' 在我的 URL 中的任何地方暴露。我希望他们都在原处使用 'symposia'。

我读过 http://book.cakephp.org/2.0/en/development/routing.html 但看不出如何做到这一点。有没有人有办法解决吗?当然我不必重命名 controllers/models 和数据库表来执行此操作?

我不知道这是否有所不同,但我也打开了管理路由,所以我的 SymposiumsController.php 也具有以下功能:

admin_add()
admin_delete()
admin_edit($id)

感谢任何帮助。

这是这个特定重定向的代码:

Router::connect('/:controller/:action/:id',
   array('controller' => 'symposiums', 'action' => 'view', 1)
);

:controller => Give the name new name of controller e.g. symposia
:action => Give the name new name of action  e.g. view
:id => Give the name new name of controller e.g. 23

但是如果您需要重定向多个操作,那么我建议您重命名控制器。

注意: 如果您重命名控制器或创建新的路由器,那么您需要确保在所有应用程序中将 link 修改为新的控制器名称。

来源:Cakephp Router