我的Twig include
有一个奇怪的问题,即在我的HTML上呈现一些不可见的字符。我尝试用千种方式搜索它,但找不到有类似问题的人。事实上,我甚至不确定它是否与Twig或Symfony相关或者是什么,所以我不确定我需要寻找什么。我试试m
在我的一个视图的两个不同点上,我使用for
循环通过li
每个include
渲染一个单独的twig文件,每次都有一组不同的参数。这两个循环是:
<ul class="search-results">
{% for entity in entities %}
{% include 'SomeBundle:Users:renderUserResults.html.twig' with {'entity':entity, 'callType':0} %}
{% endfor %}
</ul>
和
<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>
renderUserResults.html.twig
显然相关的内容只是:
{% set role = common.roleClass(entity.type)|trim %}
<li class="{{ role }}">
// a bunch of html
</li>
但是,生成的代码在两种情况之间都有奇怪的区别。在第一个中,所有li
元素都是一个接一个地生成的,它们之间只有一些空间被浏览器忽略。但在第二个问题中,Chrome Web Inspector会在每个li
之前显示一些非折叠空间,如下所示:
右键单击其中一个空格并选择&#34;编辑为HTML&#34;,出现此红点:
该空间阻止每个li
的顶部和底部边距折叠(li
s呈现为一列框),因此创建了我不想要的额外空间。我无法显示呈现列表的屏幕截图,所以我希望我提供了足够的信息。
所以最重要的是,我需要摆脱那些红点,但我不知道为什么或在哪里创建它们。正如您所看到的,两种情况之间的唯一区别是与include一起传递的参数集,但我看不出它会如何导致出现奇怪的字符。我已经尝试过在任何地方都使用{% spaceless %}
标记,并且还手动删除了twig文件中的所有空格和换行符,但它们都没有工作。手动删除Web检查器中的红点会使html标记之间的所有空格再次崩溃,但当然这不是一个选项。
答案 0 :(得分:4)
这些是您的文件包含utf8 Byte Order Mark的症状。它呈现为一个隐形字符并且可以轻松破坏PHP代码,建议您始终保存没有BOM的utf8文件 - 所有最近的编辑都支持此。