【发布时间】:2014-11-26 13:40:37
【问题描述】:
如果你这样做,你会得到一个错误:
<p>@if($foo)@if($bar)test@endif@endif</p>
如果你这样做,你会得到<p> test </p>,增加了太多的空白:
<p>@if($foo) @if($bar)test@endif @endif</p>
有没有办法避免这种情况?
【问题讨论】:
如果你这样做,你会得到一个错误:
<p>@if($foo)@if($bar)test@endif@endif</p>
如果你这样做,你会得到<p> test </p>,增加了太多的空白:
<p>@if($foo) @if($bar)test@endif @endif</p>
有没有办法避免这种情况?
【问题讨论】:
尝试使用三元运算符,Laravel 中没有空格控制
<p>{{ $foo ? ($bar ? 'test' : '') : ''}}</p>
【讨论】:
您可以在要关闭或连接的代码之间添加{{""}},无需空格。
<p>@if($foo)@if($bar)test@endif{{""}}@endif</p>
【讨论】:
您始终可以使用 packagist 上的 hedronium/spaceless-blade 包将此功能添加到 Blade。
【讨论】:
foreach loop 工作,仍然得到空间
{% spaceless %} 和 {% endspaceless %} 的原因,尽管它的标签语法使用了开始 和 结束分隔符({% 和 %})。换句话说,建议的解决方案解决了一个不同的问题。
这似乎获得了很多搜索流量,所以我想我会添加一个更新来分享我这些天是如何处理这个问题的。基本上,它的代码要多一点,但最终会变得简单而干净:
@if($foo)
<p>Test</p>
@elseif($bar)
<p>Test2</p>
@else
<p>Test3</p>
@endif
故事的寓意是,当您使用刀片时,不要试图在元素中塞入大量条件。相反,让条件的结果包含该元素。它干净、易于阅读,而且只用了几个字符。
【讨论】:
<span> 中。基本上相同的解决方案。谢谢你的回答!
据我所知,Blade 中没有 spaceless 标签。如果您想使用标准 Blade 标签,您将有额外的空格。有一个github discussion 提议新标签
【讨论】: