Bladeテンプレート 制御構文超入門 Laravel5.8

前回はディレクティブについて説明しました。
今回は制御構文を行うディレクティブを実例と共に説明します。
前提
ファイル構成
ファイル構成は以下の通りです。
ファイル名 説明
resources/views/layouts/main.blade.php レイアウトファイル
resources/views/if/if.blade.php コンテンツファイル
routes/web.php ルーティングファイル
レイアウトファイル
レイアウトファイルは以下の通りです。
<html>
    <head></head>
    <body>
        <main>
          @yield('content')
        </main>
    </body>
</html>
ルーティング
ルーティングは以下の通りです。

Route::get('/if', function () {
    return view('if.if');
});
基本
@ifディレクティブは、phpの制御構文と同じです。
@extends('layouts.main')
@php
  $value = 1;
@endphp

@section('content')

  <h1>IFディレクティブの例</h1>
  @if ($value === 1)
    <h2>TOP</h2>
  @elseif ($value === 2)
    <h2>MAIN</h2>
  @else
    <h2>OTHER</h2>
  @endif

@endsection
unless
false判定するには、@unlessディレクティブも使用できます。
以下は、@ifディレクティブを使用した場合と、@unlessディレクティブを使用した場合の例になります。
どちらも同じ結果になります。
@extends('layouts.main')
@php
  $unlessValue = false;
@endphp

@section('content')

  <h1>UNLESSディレクティブの例</h1>
  @if(!$unlessValue)
    <h2>if判定を使用したよ。</h2>
  @endif
  @unless ($unlessValue)
    <h2>UNLESSだよ。</h2>
  @endunless

@endsection
empty,isset
empty、issetも使用出来ます。
@extends('layouts.main')
@php
  $nullValue = null;
  $set = true;
@endphp

@section('content')

  <h1>ISSETの例</h1>
  @isset($set)
    <h2>その変数は定義されていて値もあるよ。</h2>
  @endisset

  <h1>EMPTYの例</h1>
  @empty($nullValue)
    <h2>その変数はemptyだよ。</h2>
  @endempty

@endsection
switch
@switchディレクティブでswitch文が使用出来ます。
@extends('layouts.main')
@php
  $switchValue = 2;
@endphp

@section('content')

  @switch($switchValue)
    @case(1)
      <p>値は1</p>
      @break

    @case(2)
      <p>値は2</p>
      @break

    @default
      <p>値はどれでもない</p>

@endswitch

@endsection
まとめ
次回は変数に指定された値を画面に表示します。
Bladeテンプレート データ展開
© DeNnie.Lab All Rights Reserved.