DEV Community

Cover image for My favorite Laravel's Blade Tricks
Surya Wiguna
Surya Wiguna

Posted on

My favorite Laravel's Blade Tricks

Beside the ability to make inheritance template using @extends, @section, and @yield, Laravel also let us to write html with any condition that we desire according to our application. Here are some of my favorite Laravel's blade trick to make the development process faster and easier.

@if

This directive is useful when we're trying to display data in view on various condition. We can use as many as @elseif that we need in Laravel's view, but keep in mind of your website performance.

@if (count($data) === 1)
    <p>You only have one data</p>
@elseif (count($data) > 1)
    <p>You have more than one data</p>
@else
    <p>You don't have any data</p>
@endif
Enter fullscreen mode Exit fullscreen mode

@auth and @guest

We can use @auth and @guest usually to check either the user is authenticated or not to display the appropriate button, for example to display button Login for unauthenticated user and button Logout for the authenticated user.

@auth
    <button>Logout</button>
@endauth

@guest
    <button>Login</button>
@endguest
Enter fullscreen mode Exit fullscreen mode

@for

If we want to do a simple loop in Laravel's blade, we can use @for just like PHP's loop structures.

@for ($i = 0; $i <= 10; $i++)
    The current order is {{$i}}
@endfor
Enter fullscreen mode Exit fullscreen mode

@ foreach

When we display a list of data in the view, we can use @ foreach to loop through the variable to get each value.

@foreach ($users as $user)
    <tr>
      <td>{{$user->name}}</td>
      <td>{{$user->email}}</td>
    </tr>
@endforeach
Enter fullscreen mode Exit fullscreen mode

@forelse

This directive is use to handle if the variable that we pass is empty to let the user know that there is no data to show.

@forelse ($users as $user)
    <tr>
      <td>{{$user->name}}</td>
      <td>{{$user->email}}</td>
    </tr>
@empty
    <tr colspan="2">
      <td>There is no user</td>
    </tr>
@endforelse
Enter fullscreen mode Exit fullscreen mode

$loop

When we do a loop, variable $loop will be available inside the loop. This variable provide many useful information, my favorite one is $loop->iteration to generate serial row number in table.

@foreach ($users as $user)
   <tr>
      <td>{{$loop->iteration}}</td>
      <td>{{$user->name}}</td>
   </tr>
@endforeach
Enter fullscreen mode Exit fullscreen mode

For the list of available properties, you can check Laravel's documentation

@csrf

Anytime we use a form in Laravel, we need to include CSRF token field in the form for security purpose. We may use @csrf directive to generate it.

<form method="POST" action="/user">
    @csrf

    ...
</form>
Enter fullscreen mode Exit fullscreen mode

@method

In Laravel we can use PUT, PATCH, or DELETE request. But html form not support that method, so we need to add hidden _method field. We can use @method to create that.

<form action="/user" method="POST">
    @method('PUT')

    ...
</form>
Enter fullscreen mode Exit fullscreen mode

@ error

We need to provide error handling in every request that user make, especially when submitting a form. We can use @ error to make a place in our view to display error message to the user.

@error('title')
    <div class="alert alert-danger">{{ $message }}</div>
@enderror
Enter fullscreen mode Exit fullscreen mode

That are some of the trick that I like to use when developing using Laravel. What's your favorite tricks? Let me know in the comment section, and I planned to make more article about Laravel like this. Thank you for reading!

Top comments (0)