Laravel Blade没有额外的空白?

时间:2014-10-01 16:27:13

标签: php laravel blade

如果您这样做,则会收到错误消息:

<p>@if($foo)@if($bar)test@endif@endif</p>

如果你这样做,你会得到<p> test </p>,增加太多的空白:

<p>@if($foo) @if($bar)test@endif @endif</p>

有没有办法避免这种情况?

编辑:请参阅下面的答案,了解更新后的回复。没有黑客或外部库,这是一个干净的方法。

5 个答案:

答案 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>