Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Twig Symfony3细枝中的语言开关_Twig_Symfony_Symfony 3.1 - Fatal编程技术网

Twig Symfony3细枝中的语言开关

Twig Symfony3细枝中的语言开关,twig,symfony,symfony-3.1,Twig,Symfony,Symfony 3.1,Gretings,我在从Twig模板更改语言时遇到问题。 我的目标是让用户能够根据需要切换页面语言。我按照指示做了一切: 我的问题是,如何从细枝模板更改存储在会话中的语言? 我最好的猜测是: {{ app.session.set('_lang', 'en') }} 但结果是,语言更改需要页面刷新两次以显示结果,一次是在会话中设置值,另一次是根据会话中存储的语言加载页面。请告知 解决方案是为所有控制器和malcolm提供的使用路由参数创建区域设置前缀: {{ path(app.request.

Gretings,我在从Twig模板更改语言时遇到问题。 我的目标是让用户能够根据需要切换页面语言。我按照指示做了一切:

我的问题是,如何从细枝模板更改存储在会话中的语言?

我最好的猜测是:

{{ app.session.set('_lang', 'en') }}

但结果是,语言更改需要页面刷新两次以显示结果,一次是在会话中设置值,另一次是根据会话中存储的语言加载页面。请告知

解决方案是为所有控制器和malcolm提供的使用路由参数创建区域设置前缀:

{{ path(app.request.attributes.get('_route'), app.request.query.all|merge({'_locale': 'en'})) }}

这将允许您在不知道路由和路由参数的情况下获取路由和路由参数。然后它将用您的值覆盖_locale参数

细枝:

{{path(app.request.attributes.get('_route'),app.request.attributes.get('_route_params')|merge({'_locale': 'en'})) }}
使用HTML/引导代码

<li class="nav-item dropdown">
    <a class="nav-link dropdown-toggle" id="language_switcher" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-globe"></i></a>
    <div class="dropdown-menu" aria-labelledby="language_switcher">
        <a class="dropdown-item" href="{{ path(app.request.attributes.get('_route'),app.request.attributes.get('_route_params')|merge({'_locale': 'ru'})) }}"><span class="flag flag-ru"> </span>  Russian</a>
        <a class="dropdown-item" href="{{ path(app.request.attributes.get('_route'),app.request.attributes.get('_route_params')|merge({'_locale': 'en'})) }}"><span class="flag flag-us"> </span>  English</a>
    </div>
</li>

  • 您是否尝试过jms/i18n路由捆绑包?当我尝试使用iThanks for advise时效果很好,但我不喜欢使用它。您必须使用params获取当前路由,更改/添加每种语言的
    \u language
    参数,例如:
    {{path(app.request.attributes.get(“'u route'),app.request.query.all | merge({u language:'en'))}