CakePHP 在 URL 中隐藏操作名称,同时传递参数



>我有这样的结构:

    example.com/我的
  • 控制器/索引/我的好页面/最大值/
  • example.com/我的
  • 控制器/索引/我的百科页面/最优/
  • example.com/我的
  • 控制器/索引/我的花式页面/低价/

但我不希望我的访问者看到"索引"一词,因为它不会给他/她提供更多信息。我需要这样的网址:

    example.com/我的
  • 控制器/我的好页面/最大值/
  • example.com/我的控制器/我的最佳页面/最优/
  • example.com/我的
  • 控制器/我的花式页面/低价/

但是要在默认的蛋糕方式中执行此操作,我需要创建单独的操作来处理我的情况。我不想创建所有操作,我需要创建一个操作,然后显示有关request->params['pass']的相关内容。

可能吗?

这是

路由的工作: http://book.cakephp.org/2.0/en/development/routing.html这实际上是核心 PagesController 的 display 方法默认所做的:

Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));

您可以对控制器执行相同的操作

Router::connect('/controller_name/*', array('controller' => 'controller_name', 'action' => 'index'));

您已经选择了一个答案,但这里有一个更好的答案。

上面发布的Router::connect('/controller_name/*', array(...));将匹配任何内容,因此您无法再访问/controller_name/delete或任何其他方法。

您应该选择不那么贪婪的路线,例如Router::connect('/contorller_name/:something', array(...));并指定一个正则表达式,例如[maxum|optimum|lowprice]。

这样做,您还可以指定要传递给控制器的something,它将作为$this->request->something

相关内容

  • 没有找到相关文章

最新更新