laravel 視圖流程控制,if switch for loop

流程控制

除了模板繼承和數據顯示以外,Blade 還爲經常使用的 PHP 流程控制提供了便利操做,例如條件語句和循環,這些快捷操做提供了一個乾淨、簡單的方式來處理 PHP 的流程控制,同時保持和 PHP 相應語句的類似性。html

If 語句

能夠使用 @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 的 issetempty 方法: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 的時候指定認證 guardcode

@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 語句能夠經過 @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 嵌套循環中的父級循環變量
相關文章
相關標籤/搜索