iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
1
Modern Web

30天成為Laravel萌新系列 第 11

30天成爲Laravel萌新(第10天)- 路由&頁面模板(3)

  • 分享至 

  • xImage
  •  

回去看了一下文件,才發現之前有好多沒用到過/images/emoticon/emoticon37.gif
畢竟只學了2周的時間。不過有些設計挺有趣的。

今天來看一下Blade模板語言中的一些(我覺得)重要的功能。

印出變數

昨天已經看過怎麼顯示變數了,使用{{$variable}}。今天要特提的是:怎麼給變數一個預設值。

{{isset($variable) ? $variable : "Default Value"}}

5.3版本^1以前還可以這麼做:

{{ $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 --}}

延伸閱讀


上一篇
30天成爲Laravel萌新(第9天) - 路由&頁面模板(2)
下一篇
30天成爲Laravel萌新(第11天)- 路由&頁面模板(4)
系列文
30天成為Laravel萌新32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言