如何将所有请求查询参数传递给twig symfony 2中的嵌入式控制器?

时间:2014-02-10 06:18:07

标签: php symfony twig

{{ render(controller("SomeBundle:Foo:Bar", {HERE I WANT TO PASS ALL query parameters app.request.query.all}) }}

那么我可以在子请求中访问所有主请求查询参数吗?子请求也应该独立运行吗?

3 个答案:

答案 0 :(得分:4)

试试这个:

{{ render(controller("SomeBundle:Foo:bar", {'all': app.request.query.all}) }}

并在行动中将其存储在$all变量

public function barAction($all) {
    // other your code
}

答案 1 :(得分:3)

来自您的控制器:

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'))

我从来没有在树枝模板中使用过这个,所以先测试一下;)

然后您可以使用该函数,但是您想要构建您将传递给子请求的变量

答案 2 :(得分:0)

直接传入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中测试