Laravel blade の if文について

ショコラ
ショコラ

Laravel blade の if文について

if文 を自作して、ブレードで使うこともできます。

もっさん先輩
もっさん先輩

① @if文

@if ({条件})
@elseif ({条件})
@else
@endif

② @unless文(unless は ifの逆)

@unless ({条件})
@else
@endunless 

③ @isset文

@isset (変数)
@else
@endisset

④ @empty文

@empty (変数)
@else
@endempty

⑤ if文 を自作する。

app/Providers に BladeServiceProvider クラスを作成します。

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Blade;

class BladeServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
      Blade::if('in',fn(mixed $needle, array|string $haystack, bool $strict = false)
        => in_array($needle,\API::explode($haystack),$strict));
      Blade::if('not_in',fn(mixed $needle, array|string $haystack, bool $strict = false)
        =>!in_array($needle,\API::explode($haystack),$strict));
      Blade::if('route',fn(...$route)
        => in_array(\Route::currentRouteName(),$route));
      Blade::if('count',fn(mixed $var, $min = 1)
        => is_countable($var) && ($min <= count($var)));
      Blade::if('len',fn(mixed $var, $min = 1)
        => is_string($var) && ($min <= strlen($var)));
      Blade::if('flash',fn(string $key)
        => session()->has($key));
      Blade::if('debug',fn()
        => env('APP_DEBUG'));
    }
}

config/app.php の providers に BladeServiceProvider を追加します。

App\Providers\BladeServiceProvider::class,

たったこれだけで、追加した if文 がブレードで使えるようになります。

@route ('index')
@endroute

@count ($arr)
@endcount

@len ($str)
@endlen

@flash ('message')
  {{ flash('message') }}
@endflash

以上

Scroll to Top