Blade Directives
{{-- Conditionals --}}
@if (count($items) > 0)
<p>{{ count($items) }} items</p>
@elseif (isset($fallback))
<p>Using fallback</p>
@else
<p>No items</p>
@endif
@unless ($user->isBanned)
<p>Welcome!</p>
@endunless
@isset($user)
<p>{{ $user->name }}</p>
@endisset
@empty($items)
<p>No items found</p>
@endempty
{{-- Loops --}}
@foreach ($users as $user)
@if ($loop->first)
<li class="first">{{ $user->name }}</li>
@else
<li>{{ $user->name }}</li>
@endif
@endforeach
@forelse ($posts as $post)
<article>{{ $post->title }}</article>
@empty
<p>No posts yet.</p>
@endforelse
{{-- Laravel 13: @use directive for using classes in templates --}}
@use(\App\Models\User)
<p>Total users: {{ User::count() }}</p>
Custom Directives
// In AppServiceProvider::boot()
Blade::directive("datetime", function (string $expression) {
return "<?php echo (\$expression)->format('Y-m-d H:i'); ?>";
});
// Usage: @datetime($post->created_at)