我一直在使用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?
文档的此页面应该可以帮助您控制标记中的空格 http://twig.sensiolabs.org/doc/templates.html#whitespace-control
我也想要正确的输出缩进,所以我为此做了一个扩展。我使它在一个要点中可用:https://gist.github.com/urraka/ccd1812570ca4b278b9f
有关一些说明,请参阅要点中的用法文件。
基本上,这个模板:
{# 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>
尽管不再维护此捆绑包,但使用 tidy_parse_string() 编写整洁服务可能是一个开始。KnpMarkupValidatorBundle