Skip to content

Core Directives

Laravel Blade Directives are pretty useful methods for working with Laravel views, this is a quick reference to all core directives.

@if

@if (count($records) === 1)
    I have one record!
@elseif (count($records) > 1)
    I have multiple records!
@else
    I don't have any records!
@endif

@unless

@unless (Auth::check())
    You are not signed in.
@endunless

@isset

@isset($records)
    // $records is defined and is not null...
@endisset

@empty

@empty($records)
    // $records is "empty"...
@endempty

@auth

@auth
    // The user is authenticated...
@endauth

@guest

@guest
    // The user is not authenticated...
@endguest

@production

@production
    // Production specific content...
@endproduction

@env('staging')
    // The application is running in "staging"...
@endenv
 
@env(['staging', 'production'])
    // The application is running in "staging" or "production"...
@endenv

@hasSection

@hasSection('navigation')
    <div class="pull-right">
        @yield('navigation')
    </div>
 
    <div class="clearfix"></div>
@endif

@sectionMissing

@sectionMissing('navigation')
    <div class="pull-right">
        @include('default-navigation')
    </div>
@endif

@switch

@switch($i)
    @case(1)
        First case...
        @break
 
    @case(2)
        Second case...
        @break
 
    @default
        Default case...
@endswitch

@for

@for ($i = 0; $i < 10; $i++)
    The current value is {{ $i }}
@endfor

@foreach

@foreach ($users as $user)
    <p>This is user {{ $user->id }}</p>
@endforeach

@forelse

@forelse ($users as $user)
    <li>{{ $user->name }}</li>
@empty
    <p>No users</p>
@endforelse

@while

@while (true)
    <p>I'm looping forever.</p>
@endwhile

@continue

@foreach ($users as $user)
    @if ($user->type == 1)
        @continue
    @endif
 
    <li>{{ $user->name }}</li>
 
    @if ($user->number == 5)
        @break
    @endif
@endforeach

@break

@foreach ($users as $user)
    @continue($user->type == 1)
 
    <li>{{ $user->name }}</li>
 
    @break($user->number == 5)
@endforeach

@class

@php
    $isActive = false;
    $hasError = true;
@endphp
 
<span @class([
    'p-4',
    'font-bold' => $isActive,
    'text-gray-500' => ! $isActive,
    'bg-red' => $hasError,
])></span>
 
<span class="p-4 text-gray-500 bg-red"></span>

@checked

<input type="checkbox"
        name="active"
        value="active"
        @checked(old('active', $user->active)) />

@selected

<select name="version">
    @foreach ($product->versions as $version)
        <option value="{{ $version }}" @selected(old('version') == $version)>
            {{ $version }}
        </option>
    @endforeach
</select>

@disabled

<button type="submit" @disabled($errors->isNotEmpty())>Submit</button>

@readonly

<input type="email"
        name="email"
        value="email@laravel.com"
        @readonly($user->isNotAdmin()) />

@required

<input type="text"
        name="title"
        value="title"
        @required($user->isAdmin()) />

@include

<div>
    @include('shared.errors')
 
    <form>
        <!-- Form Contents -->
    </form>
</div>

@includeIf

@includeIf('view.name', ['status' => 'complete'])

@includeWhen

@includeWhen($boolean, 'view.name', ['status' => 'complete'])

@includeUnless

@includeUnless($boolean, 'view.name', ['status' => 'complete'])

@includeFirst

@includeFirst(['custom.admin', 'admin'], ['status' => 'complete'])

@each

@each('view.name', $jobs, 'job')
@each('view.name', $jobs, 'job', 'view.empty')

@once

@once
    @push('scripts')
        <script>
            // Your custom JavaScript...
        </script>
    @endpush
@endonce

@pushOnce

@pushOnce('scripts')
    <script>
        // Your custom JavaScript...
    </script>
@endPushOnce

@verbatim

@verbatim
    <div class="container">
        Hello, {{ name }}.
    </div>
@endverbatim