【发布时间】:2015-12-31 21:20:50
【问题描述】:
每个页面都可以通过两种方式提供 - “html”和“json”方式。
“html 方式”包含一个完整的 html 页面 - 页眉/页脚/菜单/主要内容 - 就像每个页面一样。
“json方式”只包含页面特定的东西,比如内容和标题。
为了实现这一点,我从base.html.twig 扩展的每个模板中都包含以下几行:
{% extends app.request.isXmlHttpRequest()
? "base/ajax.json.twig"
: "base/full.html.twig" %}
full.html.twig 只是一个将内容包装在页眉/页脚/菜单中的文件。ajax.json.twig 包含以下内容:
{
"title": "{% block title %}{% endblock %}",
"content": "{% block body %}{% endblock %}"
}
所有这些东西的想法是轻松创建灵活的页面,这些页面可以作为 html 页面和 json 响应,具体取决于 app.request.isXmlHttpRequest()
问题是在 base/ajax.json.twig 中我必须转义 body 块中的内容,以便文件是有效的 json 对象,例如<a href="/"> 使 json 无效,因为引号没有转义:
{ "content": "<a href="/">" }
我需要{{ parent()|json_encode() }} 之类的东西,不是parent(),而是child(),很遗憾我在文档中找不到。
有什么建议吗?
【问题讨论】:
标签: php json ajax symfony twig