如何在CakePHP 3中设置路由的默认前缀?

时间:2011-09-11 08:18:44

标签: php cakephp cakephp-3.0

我正在使用语言的前缀,我不确定这是正确的方法,但我不想为每个控制器编写自定义路由。我现在有20个控制器(最简单)。

我遇到的问题是/ nl / contact和/ en / contact试图路由到nl_index()和en_index(),这对于管理路由来说很好,但所有控制器都是多语言编程并使用i18n,所以他们应该只使用index(),edit()等,而不是语言_。

如何做到这一点?我添加这些前缀的原因是我可以使用相同的控制器和函数来获取更多内容。我目前在beforeFilter中为基于url(/ en,/ nl)的前2/3字符的语言编写Configure.write语言。

1 个答案:

答案 0 :(得分:1)

我将根据CakePHP

向您展示Croogo CMS中的实现

here is class CroogoRouter Router

看看这一行:

Router::connect('/:locale/:controller/:action/*', array(), array('locale' => '[a-z]{3}'));

这将创建Localized routes模式,其中locale变量可以 3个字母的语言代码read in ISO 639

这意味着,如果任何已解析的路径将以3 letter code开头,则它将被用作传递给AppController的locale变量

然后look at this file,其中列出了这类的用法:

CroogoRouter::connect('/', array('controller' => 'nodes', 'action' => 'promoted'));

如您所见,您将一些action path(此处为/)与控制器和操作相关联,但CroogoRouter将负责使用:locale变量

本地化此路径

注意:不要忘记提及 MIT许可证,如果您要使用其代码,这是 Croogo CMS 的默认值; - )