渲染的替代品(controller())

时间:2017-02-15 07:14:57

标签: symfony

实际上在我的项目中,如果用户有请求,我需要在导航栏中显示。为此,我在树枝模板a:

中使用
{{ render(controller("AppBundle:TeamRequest:numberRequests")) }}

控制器非常简单,只需执行一个学说请求,并生成一个视图。

但这部分代码很慢......比禁用它要多200ms。

有更好的方法吗?

PS:有人知道什么是Symfony \ Component \ HttpKernel \ EventListerner \ ProfilerListener?因为这部分在主要和次要请求中需要花费大量时间。

非常感谢: - )

感谢答案,我们的想法是提供服务。就我而言,我没有改变它,因为正如你在图中看到的那样,时间的主要部分是调试条,最后,生成它需要几毫秒。

所有时间线(门槛:50毫秒) enter image description here

仅子请求时间轴(阈值:1ms) enter image description here

2 个答案:

答案 0 :(得分:2)

尝试将此功能移动到服务中。然后在twig中将此服务注册为全局变量。 config.yml:

# Twig Configuration
twig:
    globals:
      number_requests_service: %your_service_name%

然后在树枝上你可以加载它:

{{ number_request_service.renderSomething }}

如果您需要服务本身的用户请求,请在服务配置中为他们提供request_stack。

答案 1 :(得分:0)

前几天我遇到了同样的问题,我用枝条扩展解决了这个问题,你可以像服务一样创建它并注入你的entityManager来做你的请求并返回一个视图。通过这种方式,Symfony2不会再次加载。