CakePHP 高级路由

Posted

技术标签:

【中文标题】CakePHP 高级路由【英文标题】:CakePHP advanced routing 【发布时间】:2011-09-02 01:27:22 【问题描述】:

如何创建这样的 URL(默认为英文):

对于类别控制器中的操作index

/类别 /zh/类别 /de/类别 ...

类别控制器中的操作view

/categories/englishslug /de/categories/deutshslug

【问题讨论】:

【参考方案1】:

本文缺少的是Router::connect() 中提供的有用的persist 功能。 这会将语言参数添加到所有生成的 url。

示例路线:

Router::connect(
  '/:language/:controller',
  array(),
  array('language' => '[a-z]2', 'persist' => array('language'))
);
Router::connect('/:language/:controller/:action/*', array(), array('language' => '[a-z]2', 'persist' => array('language')));

【讨论】:

【参考方案2】:

这正是 Cakephp 中自定义路由的用途。您可以定义自己的路由器类来为您处理所有这些逻辑,并在通过调度程序运行之前缓解一切。我最近通过参考 Mark Story 本人的这篇博文,完成了您想要做的事情:http://mark-story.com/posts/view/using-custom-route-classes-in-cakephp

【讨论】:

以上是关于CakePHP 高级路由的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP - 从插件加载路由文件

CakePHP - 如何使用 slug 进行反向路由?

如何为现有的 CakePHP (2) 项目添加新的 url 路由

CAKEPHP 1.2/1.3 中的前缀路由和插件

CakePHP 中的本地化路由:如何重定向到默认语言

CakePHP 中命名参数的路由配置