基于isxmlhttprequest的Twig扩展

基于isxmlhttprequest的Twig扩展,twig,silex,Twig,Silex,我正在将Twig与Silex一起使用,在if语句中使用extend时遇到一些问题。基本上,页面被扩展了,但请求不是由AJAX完成的 {% if app.request.isXmlHttpRequest == false %} {% extends 'layout.html.twig' %} {% endif %} 然而,这是可行的。该按钮仅在请求基于AJAX时显示 {% if app.request.isXmlHttpRequest %} <button type="button"

我正在将Twig与Silex一起使用,在if语句中使用extend时遇到一些问题。基本上,页面被扩展了,但请求不是由AJAX完成的

{% if app.request.isXmlHttpRequest == false %}
 {% extends 'layout.html.twig' %}
{% endif %}
然而,这是可行的。该按钮仅在请求基于AJAX时显示

{% if app.request.isXmlHttpRequest %}
 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
{% endif %}
{%if-app.request.isXmlHttpRequest%}
&时代;
{%endif%}
同样值得一提的是,我的代码包含在{%block content%}标记中

有没有人有这方面的经验?(仅当isXmlHttpRequest为false时才能扩展)

提前感谢

试试这个:

{% extends app.request.isxmlhttprequest ? "" : "layout.html.twig" %}
在courtains
extends
后面是一个令牌,它被解析成一种不需要任何条件的方式,结果就是你得到的:你的模板总是被扩展的


我不确定它将如何处理空字符串,您可能需要创建一个“layout ajax.html.twig”文件,其中没有内容,只有要覆盖的块。

我只想确认这一点,以及您需要将新模板文件与要使用的空块一起使用。是的,但正确的解决方案是@imkingdavid。在我的例子中是:
-extends app.json?“layout.json.twig”:“layout.html.twig”