2012-09-12 27 views
7

Tôi đã googleing câu hỏi này nhưng tôi không thể tìm thấy ai có cùng vấn đề ... Và tôi không nghĩ mình là người duy nhất ở đây>. <Thêm thuộc tính vào yêu cầu đường dẫn bằng cành cây trong symfony2

Hãy xem, tôi đang sử dụng bản dịch trong symfony2. Tôi CẦN sử dụng cành cho việc này ... Vấn đề là tôi cần 3 liên kết để mọi người có thể thay đổi ngôn ngữ của trang web. Liên kết phải chuyển hướng đến cùng một trang người dùng, nhưng thay đổi '_locale'.

đầu tiên tôi nghĩ trong một cái gì đó như thế này:

// in routing.yml 
bundleStuff_someUrl: 
    pattern: /{_locale}/aloha 
    defaults: { _controller: bundleStuff:Aloha:foo } 

bundleStuff_fooUrl: 
    pattern: /{_locale}/foo/{fooParam} 
    defaults: { _controller: bundleStuff:Foo:foo } 

// in view.html.twig 
<a href="{{ path((app.request.get('_route'), { '_locale': 'l1' }) }}">lang1</a> 
<a href="{{ path((app.request.get('_route'), { '_locale': 'l2' }) }}">lang2</a> 
<a href="{{ path((app.request.get('_route'), { '_locale': 'l3' }) }}">lang3</a> 

Vấn đề trở nên khi (trong trường hợp này) các _route là fooUrl ... Có cách nào để thêm thuộc tính mỗi tôi có trong giao diện hiện tại để con đường tôi đang tìm kiếm? Nói cách khác đề cập đến ví dụ này: có cách nào để twig biết nó phải thêm 'fooParam' vào đường dẫn nếu chế độ xem hiện tại là 'fooUrl' không?

Cảm ơn trước! Hy vọng bài đăng này hữu ích! : D

Trả lời

12

_route_params thuộc tính yêu cầu giữ các thông số của tuyến đường hiện tại. Vì vậy, mã twig sẽ là,

{% set route = app.request.get('_route') %} 
{% set route_params = app.request.get('_route_params') %} 

<a href="{{ path(route, route_params | merge({ '_locale': 'l1' })) }}">lang1</a> 
<a href="{{ path(route, route_params | merge({ '_locale': 'l2' })) }}">lang2</a> 
<a href="{{ path(route, route_params | merge({ '_locale': 'l3' })) }}">lang3</a> 
+1

Lưu ý rằng thuộc tính _route_params này chỉ có trong Symfony 2.1. Nếu bạn sử dụng 2.0, bạn có thể sử dụng tiện ích mở rộng cành tùy chỉnh như được mô tả tại đây: http://htmlpurifier.org/docs/enduser-utf8.html –

+0

Xin lỗi, url sai. Quyền phù hợp là http://stackoverflow.com/questions/9378714/get-current-url-in-twig-template –

+0

Uo! Cám ơn hai bạn! : D Tôi sẽ thử ở nhà và cho bạn biết những gì. Thx rất nhiều! – ThisIsErico

2

Đối với symfony 2.0 yo có thể nhận biến _locale trong bộ điều khiển và sau khi gửi biến.

Ví dụ

Bộ điều khiển:

$language = $this->getRequest()->get('_locale'); 
    $this->$this->redirect($this->generateUrl('bundleStuff_someUrl', array('language' => $language))) 

và sau trong routing.yml

bundleStuff_someUrl: mẫu:/{ngôn ngữ}/aloha giá trị mặc định: {_controller: bundleStuff: Aloha: foo}

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