Symfony 2.0-2.1
Sử dụng này:
$router = $this->get("router");
$route = $router->match($this->getRequest()->getPathInfo());
var_dump($route['_route']);
Đó là một sẽ không cung cấp cho bạn _internal
.
Cập nhật cho Symfony 2.2+: Tính năng này không hoạt động bắt đầu từ Symfony 2.2+. Tôi đã mở một số bug và câu trả lời là "theo thiết kế". Nếu bạn muốn để có được các tuyến đường trong một tiểu hành động, bạn phải vượt qua nó như một cuộc tranh cãi
{{ render(controller('YourBundle:Menu:menu', { '_locale': app.request.locale, 'route': app.request.attributes.get('_route') })) }}
Và điều khiển của bạn:
public function menuAction($route) { ... }
@got một switchwation cho bạn kiểm tra http://meta.stackexchange.com/questions/155258/i-found-answers-for-a-question-not-really-correct-what-i-should -do –
github.com/symfony/symfony/issues/854 request.attributes.get ('_ route') không đáng tin cậy vì nó chỉ dành cho mục đích gỡ lỗi (symfony dev nói) và không hoạt động nếu yêu cầu được chuyển tiếp ... xem câu trả lời của siêu tân tinh được ghi lại và không an toàn hơn – luiges90
Lý do cho việc này không hoạt động khi một cái gì đó được chuyển tiếp là do bạn chuyển tiếp trực tiếp đến bộ điều khiển chứ không phải một tuyến đường. Như vậy, Symfony không biết lộ trình đó là gì. Thông thường, bạn có một tuyến đến một bộ điều khiển, do đó, có vẻ lạ rằng điều này không thể báo cáo bất cứ điều gì ngoài "_internal", tuy nhiên, có thể tạo các bộ điều khiển có mục đích chung được kết hợp với nhiều định nghĩa tuyến đường. Khi bạn xem xét tất cả những điều này, tôi nghĩ rằng "gotcha" này có ý nghĩa hơn. – jzimmerman2011