如果您这样做,则会收到错误消息:
<p>@if($foo)@if($bar)test@endif@endif</p>
如果你这样做,你会得到<p> test </p>
,增加太多的空白:
<p>@if($foo) @if($bar)test@endif @endif</p>
有没有办法避免这种情况?
编辑:请参阅下面的答案,了解更新后的回复。没有黑客或外部库,这是一个干净的方法。
答案 0 :(得分:26)
尝试使用三元运算符,Laravel中没有空白控件
<p>{{ $foo ? ($bar ? 'test' : '') : ''}}</p>
答案 1 :(得分:7)
您始终可以使用packagist上的hedronium/spaceless-blade包将此功能添加到Blade。
答案 2 :(得分:6)
这似乎获得了大量的搜索流量,所以我想我会添加一个更新来分享我这些天来处理这个问题。基本上,这是一个更多的代码,但它最终是愚蠢的简单和非常干净:
@if($foo)
<p>Test</p>
@elseif($bar)
<p>Test2</p>
@else
<p>Test3</p>
@endif
故事的寓意是当你使用刀片时,不要试图在元素中填充很多条件。相反,条件的结果包含元素。它干净,易于阅读,只花了几个字符。
答案 3 :(得分:3)
据我所知,Blade中没有spaceless
标记。如果您想使用标准Blade标签,您将拥有额外的空间。有一个github discussion有关于新标记
答案 4 :(得分:2)
您可以在要关闭或连接的没有空格的代码之间添加{{""}}
。
<p>@if($foo)@if($bar)test@endif{{""}}@endif</p>