gpt4 book ai didi

symfony - Twig 链接到当前路线但更改区域设置

转载 作者:行者123 更新时间:2023-12-02 07:37:35 25 4
gpt4 key购买 nike

我会在现有网站中添加一些指向不同区域设置版本的链接。它工作得很好,但很丑^^

<li>
<a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge(app.request.query.all|merge({_locale: 'es'}))) }}">
<img src="{{ asset('img/flags/es.jpg') }}" alt="es">
</a>
</li>
<li>
<a href="{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge(app.request.query.all|merge({_locale: 'fr'}))) }}">
<img src="{{ asset('img/flags/fr.jpg') }}" alt="fr">
</a>
</li>

您有更好的想法吗?

最佳答案

您可能在许多页面和/或多个项目中都需要这一点。根据我在某些地方使用过的方法,这是一种可能的方法:

# app/config/config.yml

# ...
parameters:
# ...
app_locales: [en, es, fr]

twig:
# ...
globals:
locales: %app_locales%
# ...

然后是持有旗帜的模板:

{# app/Resources/views/includes/_flags.html.twig #}

{% set route = app.request.attributes.get('_route') %}
{% set route_params = app.request.attributes.get('_route_params') %}
{% set params = route_params|merge(app.request.query.all) %}

{# You may want to not print a flag/link for current view, the "if" here let you handle it #}

{% for locale in locales if locale != app.request.locale %}

<li>
<a href="{{ path(route, params|merge({ _locale: locale })) }}">
<img src="{{ asset('img/flags/' ~ locale ~ '.jpg') }}" alt="{{ locale }}">
</a>
</li>

{% endfor %}

最后在任何 View 中包含标志:

{# app/Resources/views/base.html.twig #}

{% include 'includes/_flags.html.twig' %}

关于symfony - Twig 链接到当前路线但更改区域设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37098837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com