ショコラ
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
以上