2012-05-20 33 views
5

Tôi rất mới để Symfony2 và tôi cần để có thể kiểm tra các tuyến đường hiện nay ở TWIG vì vậy tôi có thể hiển thị sub-menu trong một mẫu được trả lại như:Làm cách nào để có URL hoặc tuyến đường hiện tại trong TWIG?

{% render "CPAdminBundle:Messages:sidebarMenu" %} 
{% render "CPAdminBundle:Readings:sidebarMenu" %} 

Trong mẫu sidebar tôi đã cố gắng sử dụng sau đây nhưng nó ném một lỗi:

path(app.request.attributes.get('_route')) 

Cách chính xác để làm những gì tôi đang cố gắng hoàn thành là gì?

+0

Bạn nên kiểm tra [KnpMenuBundle] (https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resources/doc/index.md), nó giải quyết rất nhiều vấn đề liên quan đến thực đơn của bạn. – Maerlyn

Trả lời

22

Kiểm tra bạn muốn thực hiện không thuộc về chế độ xem. Lượt xem chỉ nên xử lý hiển thị, không thực hiện bất kỳ loại logic nào.

Thực hiện kiểm tra trong bộ điều khiển của bạn và lưu trữ nó trong một biến, chuyển biến này cho chế độ xem của bạn và kiểm tra giá trị của biến này trong đó.
Nếu bạn muốn thực hiện điều này trên mọi hành động, hãy cung cấp giao diện kernel.controller event.

Nếu bạn vẫn muốn làm điều đó trong chế độ xem, chỉ cần so sánh app.request.attributes.get('_route') với tuyến đường bạn muốn. Tôi không hiểu tại sao bạn đưa vào số path().

{% if app.request.attributes.get('_route') == 'my_route' %} 
{% endif %} 
+0

đường dẫn là thứ mà tôi đã tắt khỏi google nhưng ngay cả khi tôi cố gắng in ** {{app.request.attributes.get ('_ route')}} ** đầu ra cho biết ** _ internal ** và tôi có thể ' t dường như để có được tên đường trong quan điểm đó là những gì tôi cần kể từ khi tôi có như 10 twig mẫu sẽ đi trong sidebar của tôi và hiển thị menu con theo các tuyến đường hiện tại – MikeGA

+0

đầu ra của '$ this-> getRequest() - > attributes-> get ('_ route') 'trong bộ điều khiển? –

+0

Nó cho tôi tên của tuyến đường hiện tại giống như tôi mong đợi NHƯNG Tôi không nghĩ rằng tôi nên làm điều này trong mọi bộ điều khiển tôi sẽ có khoảng 20, bạn không nghĩ rằng nó nên được kiểm tra trong mẫu sidebar của tôi? – MikeGA

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