7

我一直在使用Twig(version 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模板中删除格式(即空行和缩进)并不是一个真正的选择,因为它使我的模板非常难以阅读和维护。

除了从模板中删除格式。有哪些方法可以呈现更干净/更整洁的 HTML Twig

4

3 回答 3

6

此文档页面应帮助您控制标签中的空格http://twig.sensiolabs.org/doc/templates.html#whitespace-control

于 2012-08-09T13:53:07.710 回答
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>
于 2015-03-30T00:23:39.557 回答
0

尽管不再维护此捆绑包,但它可能是使用 tidy_parse_string() 编写整洁服务的开始。KnpMarkupValidatorBundle

于 2014-05-15T08:02:50.133 回答