我正在创建一个多语言网站。我希望在没有设置语言参数时使用英语,在设置语言参数时使用不同的语言。
我的路由如下:
$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
。
这可以实现吗?有没有办法忽略语言参数,如果它不是fr
或es
等?
答案 0 :(得分:1)
您可以为匹配的路径元素指定正则表达式。所以你需要类似于
的东西$routes->connect(
'/:language/:controller/:action/*',
[],
['language' => 'fr|es']
);
有关详细信息,请参阅CakePHP手册/ API。