0

我需要在路由中将主控制器的值传递给 ESI 使用的控制器。

所以控制器渲染了一个 Twig 模板,在 Twig 中这被称为:

{{ render_esi(url('route_name')) }}

上面呈现了一个控制器。我需要在这两个控制器之间传递信息。

我注意到使用 $request->attributes 不起作用,即使它不是 ESI:

//these WON'T pass between master request and ESI
$request->attributes->set('the_value');
$request->attributes->get('the_value');

会话并不理想,因为我需要确保它们在某些情况下被清除。

我真的只是想要同样的请求传递一些信息一次。我希望 $request->attributes 将被共享给我,这是一个请求(尽管我相信 Symfony 将其称为具有各种子请求的主请求,我猜 $request->attributes 被锁定在该范围内) .

在 ESI 调用中将其作为查询参数传递也不好,因为它有时可能是需要传递的信息数组。

有任何想法吗?

4

1 回答 1

3

您可以像这样将参数传递给您的操作:

{{ render_esi(controller('YourBundle:Default:news', { 'max': 5 })) }}

或使用这样的路由参数

{{ render_esi(url('latest_news', { 'max': 5 })) }}

正如这个问题中正确回答的那样。

于 2013-06-09T20:50:56.483 回答