gpt4 book ai didi

php - Symfony2 - 在 Twig 部分/子请求中获取主请求的当前路由

转载 作者:可可西里 更新时间:2023-11-01 13:09:15 25 4
gpt4 key购买 nike

在单独 Controller 渲染的 Twig 部分中,我想检查当前主路由是否等于比较路由,因此我可以将列表项标记为事件。

我该怎么做?尝试在 BarController 中获取当前路线,例如:

$route = $request->get('_route');

返回 null

Uri 也不是我要找的,因为在 bar 的 Twig 中调用以下代码:

app.request.uri

返回的路由类似于:localhost/_fragment?path=path_to_bar_route

完整示例

主 Controller : FooController 扩展 Controller {

    public function fooAction(){}
}

fooAction 分支:

...some stuff...

{{ render(controller('FooBundle:Bar:bar')) }}

...some stuff...

条形 Controller :

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>

最佳答案

pabgaran 的解决方案应该有效。然而,最初的问题可能是由于 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 );
}

还没有运行这个,但它应该工作...

关于php - Symfony2 - 在 Twig 部分/子请求中获取主请求的当前路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30165999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com