【问题标题】:CakePHP - Change Controller name in URLCakePHP - 在 URL 中更改控制器名称
【发布时间】:2015-10-28 10:31:10
【问题描述】:

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

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

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

问题是'symposiums' 不是一个真实的(英语)词。应该是“专题讨论会”。

我想重命名我的网址,使其如下所示:
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 中看到的内容没有区别。

简而言之,我不希望在我的 URL 中的任何地方公开“专题讨论会”。我希望他们都使用“专题讨论会”。

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

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

admin_add()
admin_delete()
admin_edit($id)

感谢任何帮助。

【问题讨论】:

  • 尝试在控制器中设置name property,我相信路由器会尊重该名称。
  • @Oldskool 谢谢。我试过这个,但不幸的是它给出了一个错误:缺少视图错误:找不到 SymposiumsController::index() 的视图。错误:确认您已创建文件:app/View/Symposia/index.ctp 还尝试将我的“Symposiums”视图目录重命名为“Symposia”,然后重定向回 URL,例如 domain.com/symposiums - 这是原来的问题
  • 旧路线可能仍在缓存中,请尝试清除它。
  • 缓存在应用程序中被关闭。我有 Configure::write('Cache.disable', true);在我的配置文件中设置。
  • Router::connect('symposia 在座谈会前缺少/

标签: php cakephp cakephp-2.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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    相关资源
    最近更新 更多