在 Twig 之间渲染的隐形字符包括

sei*_*ses 2 html byte-order-mark symfony twig

我有一个 Twig 的奇怪问题,include它在我的 HTML 上呈现一些不可见的字符。我试过用一千种不同的方式在谷歌上搜索它,但找不到任何有类似问题的人。事实上,我什至不确定它是否与 Twig 或 Symfony 或什么有关,所以我不确定我需要寻找什么。我会试试m

在我的一个视图中的两个不同点,我使用一个for循环来li通过includeing 一个单独的 twig 文件来呈现每个点,每次都使用一组不同的参数。这两个循环是:

<ul class="search-results">
    {% for entity in entities %}
        {% include 'SomeBundle:Users:renderUserResults.html.twig' with {'entity':entity, 'callType':0} %}
    {% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)

<ul class="search-results">
    {% for entity in entities %}
        {% include 'SomeBundle:Users:renderUserResults.html.twig' with {'entity':entity, 'time_search':time_search, 'time_meeting_search':time_meeting_search} %}
    {% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)

的明显相关内容renderUserResults.html.twig只是:

{% set role = common.roleClass(entity.type)|trim %}
<li class="{{ role }}">
    // a bunch of html
</li>
Run Code Online (Sandbox Code Playgroud)

然而,生成的代码在两种情况下都有一个奇怪的区别。在第一个中,所有li元素都很好地生成,一个接一个,它们之间只有一些被浏览器忽略的空格。但在第二个状态,Chrome Web检查显示了一些不收缩空间之前每一个li,就像这样:

http://imgur.com/WsmI6g9

当右键单击其中一个空格并选择“编辑为 HTML”时,会出现这个红点

http://imgur.com/p6xZ5lj

该空间防止每个的顶部和底部边距li折叠(lis 呈现为一列框),因此创建了我不想要的额外空间。我无法显示渲染列表的屏幕截图,所以我希望我提供了足够的信息。


所以最重要的是,我需要摆脱那些红点,但我不知道为什么或在哪里创建它们。如您所见,这两种情况的唯一区别是随 include 传递的参数集,但我看不出这会如何导致出现奇怪的字符。我已经尝试{% spaceless %}在任何地方使用标签,并手动删除树枝文件中的所有空格和换行符,但它们都不起作用。手动删除 web 检查器中的红点会使 html 标签之间的所有空格再次折叠,但这当然不是一种选择。

Mae*_*lyn 5

这些是您的文件包含 utf8字节顺序标记的症状。它呈现为一个不可见的字符并且可以很容易地破坏 php 代码,建议您始终保存没有 BOM 的 utf8 文件 - 所有最近的编辑器都支持这一点。

  • 是的,就是这样。我用 _UTF-8 保存了文件,没有 BOM_ 编码,它解决了这个问题。谢谢! (2认同)