تبديل _locale يدويًا في symfony 4

0

أنا عالقة في الحصول على حل للتبديل يدويا _locale المتغير في Symfony 4.

لقد اتبعت هذه الخطوات ، ولكن الآن ليس لدي أي فكرة على الإطلاق عن كيفية إنشاء زر تبديل بسيط في قسم التنقل. ألقيت أيضًا نظرة على هذا السؤال ، ولكن يبدو أن هذا إصدار أقدم من Symfony ..

يمكن لأي شخص أن يساعدني في الخروج من هذه الحفرة المظلمة وأشرح لي كيف يمكنني دمج بسيطة _locale زر التبديل ، أو على الأقل توجيه لي في الاتجاه الصحيح؟

1 إجابة

0

الجواب يختلف قليلاً عن هذه الإجابة التي لا تنطبق في Symfony 4. ابدأ بتحرير services.yaml ملف في دليل التكوين.

{# project/config/services.yaml}

# ...
parameters:
    # ...
    app_locales: [nl_NL, en_EN]

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

ثم أضف قالبًا لدمج زر التبديل في مكان ما في النموذج الأساسي.

{# project/templates/_locale_switcher.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 %}

وأخيرًا قم بدمج هذا القالب الجديد في القالب الأساسي.

{# project/templates/base.html.twig #}

{% include '_locale_switcher.html.twig' %}
:مؤلف
فوق
قائمة طعام