{{ render(controller("SomeBundle:Foo:Bar", {HERE I WANT TO PASS ALL query parameters app.request.query.all}) }}
因此,我可以訪問子請求中的所有主請求查詢參數,並且子請求也應該獨立運行?如何將所有請求查詢參數傳遞給twig symfony 2中的嵌入式控制器?
{{ render(controller("SomeBundle:Foo:Bar", {HERE I WANT TO PASS ALL query parameters app.request.query.all}) }}
因此,我可以訪問子請求中的所有主請求查詢參數,並且子請求也應該獨立運行?如何將所有請求查詢參數傳遞給twig symfony 2中的嵌入式控制器?
試試這個:
{{ render(controller("SomeBundle:Foo:bar", {'all': app.request.query.all}) }}
,並在行動儲存於$all
可變
public function barAction($all) {
// other your code
}
從你的控制器:
array_merge($request->query->all(), $request->get('_route_params'));
//query->all : get all query string parameters
//_route_params : get current route parameters
從您的樹枝模板必須是某事像:
app.request.query.all|merge(app.request.attributes.get('_route_params'))
我從來沒有在樹枝模板中使用這一點,所以第一次測試;)
然後無論你想建立你會傳給你的子請求
的變量,你可以使用該功能只是通過在什麼是app.request.query.all:
{{ render(controller("SomeBundle:Foo:Bar", app.request.query.all)
要合併一些額外的:
{{ render(controller("SomeBundle:Foo:Bar", { something: 'extra' }|merge(app.request.query.all))
在Symfony 3.3.10和Twig中測試1.35.0
在這種情況下SomeBundle:Foo:bar url將會工作如果我想直接訪問而不是通過subrequest。我想確保它在兩種情況下都能正常工作。 – vishal
嘗試轉儲'$ all'和'subrequest',你會發現它們是不同的。這也取決於你的具體目標。我想你可能需要完全使用'$ all' –