【问题标题】:CakePHP 3.x optional language routingCakePHP 3.x 可选语言路由
【发布时间】:2017-03-29 07:17:38
【问题描述】:

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

我的路由如下:

$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 等,有没有办法忽略它?

【问题讨论】:

    标签: cakephp routing cakephp-3.0


    【解决方案1】:

    您可以指定一个正则表达式来匹配路由元素。所以你需要类似的东西

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

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

    【讨论】:

    • 如果:language 未设置为fres,这是否会使用常规/:controller/:action/* 路由? @ADmad
    • @Cellydy 如果没有语言前缀,则此答案中的路由定义根本不匹配。如果你想要标准的后备路由 you need to add them 否则 url /controller/action/blah 将是 404。
    • @ADmad 感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2015-09-30
    • 2013-12-19
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    相关资源
    最近更新 更多