除了模板繼承和數據顯示以外,Blade 還爲經常使用的 PHP 流程控制提供了便利操做,例如條件語句和循環,這些快捷操做提供了一個乾淨、簡單的方式來處理 PHP 的流程控制,同時保持和 PHP 相應語句的類似性。html
能夠使用 @if
, @elseif
, @else
和 @endif
來構造 if
語句,這些指令的功能和 PHP 相同:laravel
@if (count($records) === 1) I have one record! @elseif (count($records) > 1) I have multiple records! @else I don't have any records! @endif
爲方便起見,Blade 還提供了 @unless
指令,表示除非:數組
@unless (Auth::check()) You are not signed in. @endunless
此外,Blade 還提供了 @isset
和 @empty
指令,分別對應 PHP 的 isset
和 empty
方法:less
@isset($records) // $records is defined and is not null... @endisset @empty($records) // $records is "empty"... @endempty
認證指令oop
@auth
和 @guest
指令可用於快速判斷當前用戶是否登陸:post
@auth // 用戶已登陸... @endauth @guest // 用戶未登陸... @endguest
若是須要的話,你也能夠在使用 @auth
和 @guest
的時候指定認證 guard:code
@auth('admin') // The user is authenticated... @endauth @guest('admin') // The user is not authenticated... @endguest
Section 指令htm
你能夠使用 @hasSection
指令判斷某個 section 中是否有內容:繼承
@hasSection('navigation') <div class="pull-right"> @yield('navigation') </div> <div class="clearfix"></div> @endif
switch
語句能夠經過 @switch
,@case
,@break
,@default
和 @enswitch
指令構建:索引
@switch($i) @case(1) First case... @break @case(2) Second case... @break @default Default case... @endswitch
除了條件語句,Blade 還提供了簡單的指令用於處理 PHP 的循環結構,一樣,這些指令的功能和 PHP 對應功能徹底同樣:
@for ($i = 0; $i < 10; $i++) The current value is {{ $i }} @endfor @foreach ($users as $user) <p>This is user {{ $user->id }}</p> @endforeach @forelse ($users as $user) <li>{{ $user->name }}</li> @empty <p>No users</p> @endforelse @while (true) <p>I'm looping forever.</p> @endwhile
注:在循環的時候能夠使用
$loop
變量獲取循環信息,例如是不是循環的第一個或最後一個迭代。
使用循環的時候還能夠結束循環或跳出當前迭代:
@foreach ($users as $user) @if ($user->type == 1) @continue @endif <li>{{ $user->name }}</li> @if ($user->number == 5) @break @endif @endforeach
還能夠使用指令聲明來引入條件:
@foreach ($users as $user) @continue($user->type == 1) <li>{{ $user->name }}</li> @break($user->number == 5) @endforeach
$loop
變量在循環的時候,能夠在循環體中使用 $loop
變量,該變量提供了一些有用的信息,好比當前循環索引,以及當前循環是否是第一個或最後一個迭代:
@foreach ($users as $user) @if ($loop->first) This is the first iteration. @endif @if ($loop->last) This is the last iteration. @endif <p>This is user {{ $user->id }}</p> @endforeach
若是你身處嵌套循環,能夠經過 $loop
變量的 parent
屬性訪問父級循環:
@foreach ($users as $user) @foreach ($user->posts as $post) @if ($loop->parent->first) This is first iteration of the parent loop. @endif @endforeach @endforeach
$loop
變量還提供了其餘一些有用的屬性:
屬性 | 描述 |
---|---|
$loop->index |
當前循環迭代索引 (從0開始) |
$loop->iteration |
當前循環迭代 (從1開始) |
$loop->remaining |
當前循環剩餘的迭代 |
$loop->count |
迭代數組元素的總數量 |
$loop->first |
是不是當前循環的第一個迭代 |
$loop->last |
是不是當前循環的最後一個迭代 |
$loop->depth |
當前循環的嵌套層級 |
$loop->parent |
嵌套循環中的父級循環變量 |