2012-03-13 25 views
12

Tôi sử dụng công cụ tạo khuôn mẫu cho dự án Symfony2 đa ngôn ngữ. Có trình chuyển đổi ngôn ngữ trong layout.html.twigchuyển đổi ngôn ngữ mà không thay đổi trang hiện tại

Tôi muốn người dùng có thể chuyển đổi ngôn ngữ mà không thay đổi trang hiện tại bằng cách nhấp vào liên kết ngôn ngữ. Tôi đã viết đoạn mã sau mà chỉ làm nhiệm vụ cho các trang tĩnh. Kể từ khi các liên kết ngôn ngữ chỉ cần vượt qua locale đến tuyến đường này, trong trường hợp tham gia của các thông số yêu cầu bổ sung, nó rõ ràng là ném ngoại lệ: route has some missing mandatory parameters

<ul id="lang"> 
    <li><a href="{{ path(app.request.attributes.get('_route'), {_locale: 'az'}) }}">AZ</a></li> 
    <li><a href="{{ path(app.request.attributes.get('_route'), {_locale: 'en'}) }}">EN</a></li> 
</ul> 

Trả lời

34

Bạn có thể nhận được các thông số tuyến đường với .get('_route_params')merge chúng với locale mong muốn của bạn:

<ul class="lang-menu"> 
    <li><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'ca'})) }}">Català</a></li> 
    <li><a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'en'}))}}">English</a></li> 
</ul> 
+1

hoạt động như một sự quyến rũ! – Zagloo

+0

Tôi biết chúng tôi không được phép nói điều này ngay từ cái nhìn đầu tiên nhưng ... tôi yêu bạn! –

+0

Cảm ơn rất nhiều, điều đó đã làm cho ngày của tôi –

Các vấn đề liên quan