回去看了一下文件,才發現之前有好多沒用到過
畢竟只學了2周的時間。不過有些設計挺有趣的。
今天來看一下Blade模板語言中的一些(我覺得)重要的功能。
昨天已經看過怎麼顯示變數了,使用{{$variable}}
。今天要特提的是:怎麼給變數一個預設值。
{{isset($variable) ? $variable : "Default Value"}}
{{ $variable or 'Default' }}
不過在5.8、6.x以後似乎改成這樣:
{{$variable ?? 'Default'}}
我不清楚爲什麼把這麼方便的功能給去除掉了。
6.x之後的用法並沒有在官網的文件特別提,會發現單純是範例中有類似程式碼。
上面其實還相當於
@isset ($variable)
{{$variable}}
@else
Default
@endisset
另外還有@empty
@empty($variable)
Default
@else
{{$variable}}
@endempty
迴圈非常接近js、php、c的用法,直接看範例:
@for ($i = 0; $i < 10; $i++)
The current value is {{ $i }}
@endfor
@foreach ($item as $list)
{{$item}} <br/>
@endforeach
@forelse ($item as $list)
<li>{{ $item }}</li>
@empty
<p>No item</p>
@endforelse
@while (true)
<p>I'm looping forever.</p>
@endwhile
迴圈之中還可以使用@continue
、@break
,甚至可以像下面這樣用:
@foreach ($users as $user)
@continue($user->type == 1)
<li>{{ $user->name }}</li>
@break($user->number == 5)
@endforeach
@continue
、@break
後面再接條件,就無須在用@if
來判斷。
喔!這寫法太美了。
其實上面已經看過一些判斷條件了,這裡說的是通用判斷條件。如同PHP,可以使用@if
, @elseif
, @else
和 @endif
來撰寫。
@if (judge1?)
// Something when true
@elseif (judge2?)
// Something when judge2 is true
@else
// Other condition
@endif
此外還有@unless
,@isset
, @empty
, @auth
和 @guest
。
如果變數內容文字包含 "<"、">"等在HTML的特殊字符,會被轉譯,避免被XSS攻擊。可以透過{!! $variable !!}
來原始傾出。
同樣的,在Blade模板裡面 "{{" 、"}}"也被視為特殊字串,可以通過@{{something}}
來原始輸出。 (在使用Vue.js等框架時有用)
當然可以使用HTML的註釋方式:
<!-- this is a commennt -->
不過你也可以用Blade的註釋,這種註釋最後不會被渲染進網頁。
{{-- this is an other comment --}}