Symfony2-在树枝部分/子请求中获取主要请求的当前路线 [英] Symfony2 - get main request's current route in twig partial/subrequest
问题描述
在由单独的控制器渲染的Twig部分中,我想检查当前主路径是否等于比较的路径,因此可以将列表项标记为活动状态.
In Twig partial rendered by separate controller, I want to check if current main route equals to compared route, so I can mark list item as active.
我该怎么做?尝试在BarController中获取当前路线,例如:
How can I do that? Trying to get current route in BarController like:
$route = $request->get('_route');
返回null
.
Uri
也不是我想要的,因为在bar
的树枝中调用以下代码:
Uri
is also not what I'm looking for, as calling below code in bar
's twig:
app.request.uri
返回类似于以下内容的路线:localhost/_fragment?path=path_to_bar_route
returns route similar to: localhost/_fragment?path=path_to_bar_route
完整示例
主控制器: FooController扩展了控制器{
Main Controller: FooController extends Controller{
public function fooAction(){}
}
fooAction树枝:
fooAction twig:
...some stuff...
{{ render(controller('FooBundle:Bar:bar')) }}
...some stuff...
酒吧控制器:
BarController extends Controller{
public function barAction(){}
}
barAction树枝:
barAction twig:
<ul>
<li class="{{ (item1route == currentroute) ? 'active' : ''}}">
Item 1
</li>
<li class="{{ (item2route == currentroute) ? 'active' : ''}}">
Item 2
</li>
<li class="{{ (item3route == currentroute) ? 'active' : ''}}">
Item 3
</li>
</ul>
推荐答案
pabgaran 的解决方案应该可以使用.但是,最初的问题可能是由于request_stack
引起的.
pabgaran's solution should work. However, the original problem occurs probably because of the request_stack
.
http://symfony.com/blog/new-in-symfony -2-4-request-stack
由于您处于子请求中,因此您应该能够获得顶级(master
)Request
并获得_route
.像这样:
Since you are in a subrequest, you should be able to get top-level (master
) Request
and get _route
. Something like this:
public function barAction(Request $request) {
$stack = $this->get('request_stack');
$masterRequest = $stack->getMasterRequest();
$currentRoute = $masterRequest->get('_route');
...
return $this->render('Template', array('current_route' => $currentRoute );
}
没有运行它,但是它应该可以工作...
Haven't run this but it should work...
这篇关于Symfony2-在树枝部分/子请求中获取主要请求的当前路线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!