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

时间:2015-10-28 10:31:11

标签: php cakephp cakephp-2.0

我有一个内置在CakePHP 2.2.3中的遗留应用程序

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

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

问题在于'座谈会'不是真正的(英语)单词;它应该是'座谈会。

我想重命名我的网址,所以他们是这样的:
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,因此用户在网址中看到的内容没有任何区别。

简单地说,我不想要'座谈会'暴露在我网址的任何地方。我希望他们都能使用' symposia'在它的位置。

我看过http://book.cakephp.org/2.0/en/development/routing.html,但无法看到如何执行此操作。有没有人有办法解决吗?当然,我不必重命名控制器/模型和数据库表来执行此操作吗?

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

admin_add()
admin_delete()
admin_edit($id)

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

以下是此特定重定向的代码:

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

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

注意:如果您重命名控制器或创建新路由器,则需要确保在所有应用程序中修改指向新控制器名称的链接。

来源:Cakephp Router