我有一个 Sf2 应用程序,它带有一个扩展布局的树枝模板。在模板内部,我想使用 twig 的render
标签填充一个块。不幸的是,该render
标签会导致两个子请求,而不是预期的单个请求。但是,如果我将render
标签放在块之外,一切正常*。
*当然,除了结果只是在页面顶部而不是在块内呈现,但这只是一个额外的子请求。
render
当且仅当标签放置在一个块中时,什么可能导致发出两个子请求?
肮脏的细节
在布局中有一个额外的导航菜单(topmenu
)块:
布局.twig.html
<div class="row" id="secondary-nav">
<div class="span12">
{% block topmenu %}{% endblock %}
</div>
</div>
重复子请求示例
这是我的观点,它使用标签通过向“导航”控制器发出子请求来{% render ... %}
填充块:topmenu
index.html.twig
{% extends "FooBundle::layout.html.twig" %}
{% block topmenu %}
{% render "FooBundle:Navigation:index" with { 'active': 'feedback' } %}
{% endblock %}
到目前为止,一切都很好,但是这样做子请求由于某种未知原因被发出了两次。它没有显示两次,但我看到 SQL 查询计数增加了,symfony2 分析器也显示了两个相同的子请求。
单个子请求示例
如果我将{% render ... %}
标签放在这样的任何块之外,它只会导致一个子请求:
index.html.twig
{% extends "FooBundle::layout.html.twig" %}
{% render "FooBundle:Navigation:index" with { 'active': 'feedback' } %}
{% block topmenu %}
{% endblock %}