CakePHP 3.X可选语言路由



我正在创建一个多语言网站。当没有设置语言参数时,我希望它是英语,当设置语言参数时,它是不同的语言。

我的路由如下所示:

$routes->connect('/:language/:controller/:action/*');

问题如下:

当我访问www.mydomain.com/users/login时,它工作正常。

当我访问www.mydomain.com/fr/users/login时,它工作正常(法语)。

但是当我访问www.mydomain.com/users/login/1时,其中1是我想要解析的自定义命名参数,它自然地认为users是语言,login是我的控制器,1是我的动作。

我知道,如果我强迫总是有一个语言参数,这将不再是一个问题,但我不希望英文版本是在www.mydomain.com/en/。我希望它是在www.mydomain.com

这是可行的吗?是否有一种方法可以忽略语言参数,如果它不是fres等?

可以指定匹配路由元素的正则表达式。所以你需要一些类似于

的东西
$routes->connect(
    '/:language/:controller/:action/*', 
    [], 
    ['language' => 'fr|es']
);

参考CakePHP手册/API了解更多细节

最新更新