我一直在使用Twig
(版本1.9.1
)作为PHP
模板引擎,我对渲染的HTML
并不完全满意添加了换行符和空格,使结果非常不整洁。为了使我的模板更灵活,我使用的是macros
,它可以以嵌套方式相互调用,这本身就可以正常工作,但似乎会让事情变得更糟。例如,<a>
元素呈现如下:
<a href="http://google.com" alt="some alternative text"> some text with <strong>some html</strong>
</a>
我知道部分原因是我的twig
模板的格式化方式,就好像我删除空行并从中缩进,渲染的HTML
看起来更整洁,但并不完全:以下输出显示了呈现的<a>
,在元素的开头和结尾之间仍有2个换行符,尽管相应的模板不包含任何空行或空格!:
<a href="http://google.com" alt="some alternative text">some text with <strong>some html</strong>
</a>
即使它有帮助,从我的twig
模板中删除格式(即空行和缩进)也不是一个选项,因为它使我的模板很难阅读和维护。
除了从模板中删除格式。有哪些方法可以使用Twig
呈现更干净/更整洁的HTML?
答案 0 :(得分:4)
本文档的这一页应该可以帮助您控制标记http://twig.sensiolabs.org/doc/templates.html#whitespace-control
中的空格答案 1 :(得分:1)
我也想要正确的输出缩进,所以我做了一个扩展。我在要点中提供了它:https://gist.github.com/urraka/ccd1812570ca4b278b9f
请参阅gist中的用法文件以获得一些解释。
基本上,这个模板:
{# Given variable = "line1\nline2\nline3" #}
<body>
{% if true %}
<stuff>{% if true %}only blocks that take the whole line have effect{% endif %}</stuff>
{{ variable }}
{% endif %}
</body>
会像这样结束:
<body>
<stuff>only blocks that take the whole line have effect</stuff>
line1
line2
line3
</body>
答案 2 :(得分:0)
虽然不再维护此捆绑包,但使用tidy_parse_string()编写整洁的服务可能是一个开始。 KnpMarkupValidatorBundle