如果你這樣做你會得到一個錯誤:Laravel Blade沒有額外的空格?
<p>@if($foo)@if($bar)[email protected]@endif</p>
如果你這樣做,你會得到<p> test </p>
,加入過多whitepace:
<p>@if($foo) @if($bar)[email protected] @endif</p>
是否有辦法避免這種情況?
編輯:請參閱下面的答案以獲取最新的回覆。有一個乾淨的方法可以做到這一點,沒有黑客或外部庫。
如果你這樣做你會得到一個錯誤:Laravel Blade沒有額外的空格?
<p>@if($foo)@if($bar)[email protected]@endif</p>
如果你這樣做,你會得到<p> test </p>
,加入過多whitepace:
<p>@if($foo) @if($bar)[email protected] @endif</p>
是否有辦法避免這種情況?
編輯:請參閱下面的答案以獲取最新的回覆。有一個乾淨的方法可以做到這一點,沒有黑客或外部庫。
這似乎是獲得了大量的搜索流量,所以我想我會添加更新來分享我最近處理這些事情的方式。基本上,它是多一點的代碼,但它最終被愚蠢的簡單,非常乾淨:
@if($foo)
<p>Test</p>
@elseif($bar)
<p>Test2</p>
@else
<p>Test3</p>
@endif
當你與刀片工作故事的寓意是,不要試圖塞進了很多條件句內元素。而是讓條件的結果包含元素。它很乾淨,易於閱讀,並且只花了幾個字符。
嘗試用三元運算符,存在Laravel
<p>{{ $foo ? ($bar ? 'test' : '') : ''}}</p>
Upvoted爲具體示例的備用解決方案。 – Citizen 2014-10-01 18:51:28
沒有空白對照據我所知,在刀片沒有spaceless
標籤。如果你想使用標準的刀片標籤,你將有額外的空間。有一個github discussion與新標籤的建議
您可以隨時在packagist上使用hedronium/spaceless-blade包將此功能添加到刀片。
aint for'foreach loop',仍然獲得空格 – 2017-02-18 18:18:09
引用的包旨在消除* already-parsed Blade指令*之間的內容空間,而不是*相鄰*指令之間的空格,只有空白符之間有空格。 Macin's Answer中的鏈接澄清了區別。這就是Symfony的Twig引擎包含'{%spaceless%}'和'{%endspaceless%}'的原因,儘管它的標籤語法使用了開放*和*結束分隔符('{%'和'%}'' )。換句話說,建議的解決方案解決了一個不同的問題。 – 2017-11-03 16:47:20
我的麪包屑有這個問題,我用「」把它們包裹起來。基本上相同的解決方案。謝謝您的回答! – 2017-06-27 09:01:17
雖然它使我們很難訴諸這種方法(因爲似乎沒有其他選擇),但它是令人驚訝的有效的。謝謝! – 2017-11-03 16:36:49