9 Laravel 11 Basics: Blade Templates

Anis MarrouchiAI Bot
By Anis Marrouchi & AI Bot ·

Loading the Text to Speech Audio Player...

Blade is the simple yet powerful templating engine included with Laravel. Unlike some PHP templating engines, Blade does not restrict you from using plain PHP code in your templates. In fact, all Blade templates are compiled into plain PHP code and cached until they are modified, meaning Blade adds essentially zero overhead to your application.

Blade template files use the .blade.php file extension and are typically stored in the resources/views directory. Blade views may be returned from routes or controllers using the global view helper. For example:

Route::get('/', function () {
    return view('greeting', ['name' => 'Finn']);
});

Displaying Data

You can display data passed to your Blade views by wrapping the variable in curly braces. For example, given the following route:

Route::get('/', function () {
    return view('welcome', ['name' => 'Samantha']);
});

You can display the contents of the name variable like so:

Hello, {{ $name }}.

Blade's {{ }} echo statements are automatically sent through PHP's htmlspecialchars function to prevent XSS attacks. You are not limited to displaying the contents of variables passed to the view; you can also echo the results of any PHP function:

The current UNIX timestamp is {{ time() }}.

Blade Directives

In addition to template inheritance and displaying data, Blade provides convenient shortcuts for common PHP control structures, such as conditional statements and loops. These shortcuts provide a clean and terse way of working with PHP control structures while remaining familiar to their PHP counterparts.

If Statements

You can construct if statements using the @if, @elseif, @else, and @endif directives:

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

Blade also provides an @unless directive as a convenient alternative to @if statements:

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

Loops

Blade provides simple directives for working with PHP's loop structures:

@for ($i = 0; $i < 10; $i++)
    The current value is {{ $i }}
@endfor
 
@foreach ($users as $user)
    This is user {{ $user->id }}
@endforeach
 
@forelse ($users as $user)
    {{ $user->name }}
@empty
    No users
@endforelse

The $loop variable is available inside your loop and provides useful information such as the current loop index and whether it is the first or last iteration:

@foreach ($users as $user)
    @if ($loop->first)
        This is the first iteration.
    @endif
    @if ($loop->last)
        This is the last iteration.
    @endif
    This is user {{ $user->id }}
@endforeach

Components

Blade components and slots provide similar benefits to sections, layouts, and includes but offer a more streamlined approach. You can create a class-based component using the make:component Artisan command:

php artisan make:component Alert

This command creates a component in the app/View/Components directory and a corresponding Blade view in the resources/views/components directory. To use the component, you can reference it in your Blade template:

<x-alert type="danger" message="This is an alert!" />

Conclusion

Blade is a versatile and efficient templating engine that leverages the full power of PHP while providing a clean and readable syntax. Whether you're displaying data, controlling the flow of your application, or creating reusable components, Blade makes it easy to build dynamic and responsive web applications with Laravel 11.

For more detailed information, refer to the official Laravel Blade documentation.

Learn more about Blade templates and how they can enhance your Laravel applications. Check out the official documentation for more examples and advanced usage.


Want to read more tutorials? Check out our latest tutorial on Explore Improved Image and Video Segmentation with SAM 2 for Accurate Context-Aware Results.

Discuss Your Project with Us

We're here to help with your web development needs. Schedule a call to discuss your project and how we can assist you.

Let's find the best solutions for your needs.