在由独立控制器呈现的Twig部分呈现中,我想检查当前主路由是否等于比较路由,因此我可以将列表项标记为活动.
我怎样才能做到这一点?试图在BarController中获取当前路线,如:
$route = $request->get('_route');
回报null.
Uri也不是我想要的,因为在下面的代码中调用代码bar:
app.request.uri
返回类似于的路线: localhost/_fragment?path=path_to_bar_route
完整的例子
主控制器:FooController扩展Controller {
    public function fooAction(){}
}
fooAction树枝:
...some stuff...
{{ render(controller('FooBundle:Bar:bar')) }}
...some stuff...
酒吧控制器:
BarController extends Controller{
    public function barAction(){}
}
barAction树枝:
<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>
Jov*_*vic 12
帕布兰的解决方案应该有效.但是,原始问题可能是因为request_stack.
http://symfony.com/blog/new-in-symfony-2-4-the-request-stack
由于您处于子请求中,因此您应该能够获得顶级(master)Request并获得_route.像这样的东西:
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 );
}
没有运行它但它应该工作...