【问题标题】:Filling all mandatory parameters填写所有强制参数
【发布时间】:2012-06-26 08:54:45
【问题描述】:

在 Symfony2 中有一个多语言网站。在基本布局中,有这样的语言切换:

<a href="{{ path(app.request.attributes.get('_route'), {_locale: 'en'}) }}">EN</a>
<a href="{{ path(app.request.attributes.get('_route'), {_locale: 'fr'}) }}">FR</a>

这可以很好地切换语言而不更改当前页面。但是,如果有其他参数,它会因为“缺少强制参数”而引发异常。如何克服?

【问题讨论】:

    标签: symfony routing twig


    【解决方案1】:

    你可以这样做:

    <a href="{{ path(app.request.attributes.get('_route'), app.request.query.all|merge({'_locale': 'en'})) }}">EN</a>
    <a href="{{ path(app.request.attributes.get('_route'), app.request.query.all|merge({'_locale': 'fr'})) }}">FR</a>
    

    这样做是将 _locale 参数与现有查询参数合并。

    【讨论】:

    • 谢谢,但它不起作用,我在官方文档中找不到任何关于 app.request.query.all 的信息
    • app.request 返回一个 Request 对象 (api.symfony.com/2.0/Symfony/Component/HttpFoundation/…),它有一个带有 all() 方法的查询字段 'ParameterBag)。我在“_locale”周围添加了引号,不确定这是否会改变任何内容。
    • app.request.query.all 返回空数组。我不知道为什么。
    • app.request.query.all|merge(app.request.attributes.all)|merge({'_locale': 'en'})怎么样
    【解决方案2】:

    这是我的解决方案,使用 Symfony 2.2 到 2.5

    <a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'en'})) }}">English</a>
    <a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'fr'})) }}">Français</a>
    <a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'es'})) }}">Español</a> 
    

    这是我的解决方案,使用 Symfony 2.0 到 2.1

    <a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge({'_locale': 'en'})) }}">English</a>
    <a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge({'_locale': 'fr'})) }}">Français</a>
    <a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge({'_locale': 'es'})) }}">Español</a> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-24
      • 2016-02-14
      • 1970-01-01
      • 2018-09-07
      • 2018-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多