Symfony2-如何实现在twig中加载AJAX内容的部分/完整模板?

Symfony2-如何实现在twig中加载AJAX内容的部分/完整模板?,ajax,symfony,twig,template-inheritance,Ajax,Symfony,Twig,Template Inheritance,在我的Symfony2/twig webapp中,我有一个twig模板,它只包含一个..,没有包装。我将其用于ajax调用,将其嵌入到页面布局中。我们将此布局称为ajax\u template.html.twig <h1>Headline</h1> {% block my_content %} <p>My content</p> {% endblock %} 已经在我的小树枝模板中尝试了几种方法,例如include()或use()。我还检

在我的Symfony2/twig webapp中,我有一个twig模板,它只包含一个
..
,没有
包装。我将其用于ajax调用,将其嵌入到页面布局中。我们将此布局称为
ajax\u template.html.twig

<h1>Headline</h1>
{% block my_content %}
    <p>My content</p>
{% endblock %}
已经在我的小树枝模板中尝试了几种方法,例如
include()
use()
。我还检查了当前路径是否为ajax调用:

{% if '/ajax/' in path(app.request.attributes.get('_route')) %}
    {% extends 'MyBundle::base_layout.html.twig' %}
{% endif %}
但我的方法都不管用。你有什么想法吗?

写了一篇很好的文章,展示了为AJAX使用实现部分模板的好方法

这篇文章叫做“

拉特伦发表了第二篇更详细的文章,另外还包括了一篇名为“”的文章

这两篇文章(特别是第二篇)提供了详细的实现示例


基本上,诀窍是确定模板从一个变量扩展,因为你不能包装

{% extends '..' %} 
。。。与周围的
{%if%}
-语句一起使用


工作示例

{% set template = 'MyBundle::base_layout.html.twig' %}

{% if '/ajax/' in path(app.request.attributes.get('_route')) %}
    {% set template = 'MyBundle:MyController:ajax_template.html.twig' %}
{% endif %}

{% extends template %}
请注意,涉及细枝扩展的解决方案(如上述文章所述)是可重用的,通常是更好的做法。

写了一篇很好的文章,展示了实现AJAX使用部分模板的好方法

这篇文章叫做“

拉特伦发表了第二篇更详细的文章,另外还包括了一篇名为“”的文章

这两篇文章(特别是第二篇)提供了详细的实现示例


基本上,诀窍是确定模板从一个变量扩展,因为你不能包装

{% extends '..' %} 
。。。与周围的
{%if%}
-语句一起使用


工作示例

{% set template = 'MyBundle::base_layout.html.twig' %}

{% if '/ajax/' in path(app.request.attributes.get('_route')) %}
    {% set template = 'MyBundle:MyController:ajax_template.html.twig' %}
{% endif %}

{% extends template %}

请注意,涉及细枝扩展的解决方案(如上述文章所述)是可重用的,通常是更好的做法。

不需要同时扩展这两个解决方案,它们可以彼此线性扩展。。。要么部分模板包含在主模板中。。。或者部分模板具有主模板填充的空包装块。明白了吗?不太明白。你能给出一个简单的例子,其中有三个小树枝文件(1.base\u template,2.template,3.ajax\u partial;其中ajax\u template没有base\u template包装)?我的意思是:你的工作示例在base\u布局中的位置,在模板中还是在ajax_模板中?示例代码应该放在模板中,该模板将根据传入的请求是ajax请求来扩展整个或部分基础模板。啊,好的,现在我明白了。我需要对我的代码做一些修改,以这样设计它,但这将帮助我。谢谢!不需要两者都扩展,它们可以彼此线性扩展。。。要么部分模板包含在主模板中。。。或者部分模板具有主模板填充的空包装块。明白了吗?不太明白。你能给出一个简单的例子,其中有三个小树枝文件(1.base\u template,2.template,3.ajax\u partial;其中ajax\u template没有base\u template包装)?我的意思是:你的工作示例在base\u布局中的位置,在模板中还是在ajax_模板中?示例代码应该放在模板中,该模板将根据传入的请求是ajax请求来扩展整个或部分基础模板。啊,好的,现在我明白了。我需要对我的代码做一些修改,以这样设计它,但这将帮助我。谢谢!