【问题标题】:Symfony2 - passing values between ESI and main requestSymfony2 - 在 ESI 和主请求之间传递值
【发布时间】:2013-06-10 04:50:56
【问题描述】:

我需要在路由中将主控制器的值传递给 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 调用中将其作为查询参数传递也不好,因为它有时可能是需要传递的信息数组。

有什么想法吗?

【问题讨论】:

    标签: symfony


    【解决方案1】:

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

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

    或者像这样使用路由参数

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

    正如question 中正确回答的那样。

    【讨论】:

    • 嗨。谢谢,但只有2个想法。 (1) 在 ESI 调用中将其作为查询字符串参数传递 (2) 在控制器中如何使用。在 Twig 中我可以使用 {{ var_name }},但在控制器中如何使用?
    • 控制器参数和查询字符串可用,因为您习惯于在没有 ESI 的情况下使用 symfony ... $request->getParameter('yourparameter') ... 唯一的区别是请求不是一个主请求,但一个子请求。但如果您只想接收查询参数,这并不重要。子请求只是内部请求。
    猜你喜欢
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2015-10-08
    相关资源
    最近更新 更多