繁体   English   中英

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

[英]how to set default prefix for routing in CakePHP 3?

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

我有一个问题,即/ nl / contact和/ en / contact试图路由到nl_index()和en_index(),这对于管理员路由来说很好,但是所有控制器都使用i18n进行了多语言编程,因此应该使用只是index(),edit()等,而不是在它前面的language_。

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

我将向您Croogo CMS基于CakePHP的Croogo CMS的实现

这是类CroogoRouter路由器

看这行:

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

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

因此,这意味着,如果解析路径中的任何一个以3 letter code开头,它将用作传递给AppController的locale变量

然后看这个文件 ,该类的用法在哪里:

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

如您所见,您将一些action path (此处/ )连接到控制器和动作,但是CroogoRouter会使用:locale变量来本地化此路径。

注意:别忘了提到MIT许可证 ,如果您要使用MIT许可证的代码 ,则为Croogo CMS的默认值;-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM