CakePHP 3.x可选语言路由

时间:2016-11-15 11:57:53

标签: cakephp routing cakephp-3.0

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

我的路由如下:

$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等?

1 个答案:

答案 0 :(得分:1)

您可以为匹配的路径元素指定正则表达式。所以你需要类似于

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

有关详细信息,请参阅CakePHP手册/ API。