Articoli

Cosa sono le direttive Blade e come si usano in Laravel con esempi

Come sviluppatore Laravel, se desideri migliorare la leggibilità e la manutenibilità del front-end delle tue applicazioni, allora devi approfondire l’uso delle direttive Blade.

Le direttive Blade Laravel sono un potente strumento che ti consente di semplificare i tuoi modelli e renderli più espressivi. 

In questo articolo approfondiremo le direttive Blade Laravel, impareremo come creare direttive personalizzate ed esploreremo alcuni casi d’uso pratici.

Tempo di lettura stimato: 4 minuti

Cosa sono le Direttive Blade?

Blade è il motore di template fornito in bundle con il framework PHP Laravel. Le direttive blade sono un modo per incorporare il codice PHP nei modelli di visualizzazione mantenendo una sintassi pulita e leggibile. Forniscono un modo conveniente per includere contenuti logici e dinamici nelle tue visualizzazioni.

Direttive Blade

Vediamo alcune delle direttive Blade integrate fornite da Laravel.

@if@else, e @endif
@if($condition)
    // Content to display if condition is true
@else
    // Content to display if condition is false
@endif

Puoi utilizzare queste direttive per visualizzare in modo condizionale il contenuto in base a una determinata condizione.

@switch, e @endswitch
@switch($i)
    @case(1)
        First case...
        @break
 
    @case(2)
        Second case...
        @break
 
    @default
        Default case...
@endswitch
@foreach
@foreach($items as $item)
    // Content to display for each item
@endforeach

Questa direttiva esegue un’iterazione su un array o una raccolta e consente di elaborare il contenuto per ciascun elemento nel ciclo.

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

Questa direttiva esegue un’iterazione su un array e consente di elaborare il contenuto per ciascun elemento nel ciclo.

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

Questa direttiva esegue un’iterazione per condizione, l’iterazione termina quando la condizione è falsa.

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

Quando usi i cicli puoi anche saltare l’iterazione corrente o terminare il ciclo usando le direttive @continue e @break

Variabili del Loop: $loop->first, $loop->last

Durante l’iterazione di un ciclo, una variabile $loop fornisce l’accesso ad alcune informazioni utili come l’indice del ciclo corrente e se questa è la prima o l’ultima iterazione del ciclo:

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

Se ti trovi in ​​un ciclo annidato, puoi accedere alla variabile $loop del ciclo genitore tramite la proprietà genitore:

@foreach ($users as $user)
    @foreach ($user->posts as $post)
        @if ($loop->parent->first)
            This is the first iteration of the parent loop.
        @endif
    @endforeach
@endforeach

Ci sono anche informazioni che possiamo avere tramite la variabile $loop, le puoi trovare nella documentazione ufficiale Laravel.

@unless e @endunless
@unless (Auth::check())
    You are not signed in.
@endunless
@isset, @endisset
@isset($records)
    // $records is defined and is not null...
@endisset
@empty, @endempty
@empty($records)
    // $records is "empty"...
@endempty
@include
@include('partials.header')

Includi un’altra vista Blade nella vista corrente. Questo aiuta a modularizzare i tuoi modelli.

@extends, @section
@extends('layouts.app')

@section('content')
    // Content specific to this view
@endsection

Queste direttive vengono utilizzate per creare ed estendere i layout@extends specifica il layout da cui ereditare e definisce @section il contenuto da sostituire nel layout.

Creazione di direttive blade personalizzate

Laravel ti consente di creare direttive Blade personalizzate per semplificare ulteriormente le tue visualizzazioni.

Vediamo come creare le direttive custom:

Definire una direttiva personalizzata:
per definire una direttiva Blade personalizzata, sarà necessario registrarla presso un Service Provider. Innanzitutto, crea un service provider o utilizzane uno esistente. Nel metodo boot del tuo provider, utilizza la facade Blade per definire la tua direttiva personalizzata.

use Illuminate\Support\Facades\Blade;

public function boot()
{
    Blade::directive('mydirective', function ($expression) {
        return "<?php // Your custom logic here ?>";
    });
}

Stiamo definendo una direttiva chiamata @mydirective. Quando questa direttiva viene utilizzata in un modello Blade, verrà eseguita la logica all’interno della closure.

Utilizzo della direttiva personalizzata:
ora che hai definito la direttiva personalizzata, puoi utilizzarla nei tuoi modelli Blade in questo modo:

@mydirective($parameter)

Sostituisci con $parameter tutti i dati richiesti che devi trasmettere alla tua direttiva.

Casi pratici di utilizzo

Esploriamo alcuni casi d’uso pratici per le direttive Blade personalizzate.

Classi CSS condizionali:
puoi creare una direttiva che genera classi CSS in base alle condizioni:

Blade::directive('classIf', function ($expression) {
    list($condition, $class) = explode(',', $expression);
    return "<?php echo ($condition) ? '$class' : ''; ?>";
});

Ora, nel tuo modello Blade, puoi applicare in modo condizionale classi CSS come queste:

<div class="@classIf($user->isAdmin, 'admin')">...</div>

3.2 Internazionalizzazione:
creare una direttiva per la traduzione del testo può rendere le tue opinioni più concise:

Blade::directive('trans', function ($expression) {
    return "<?php echo __('$expression'); ?>";
});

Usalo in questo modo:

<p>@trans('messages.welcome')</p>

Letture Correlate

Ercole Palmeri

Newsletter sull’Innovazione
Non perderti le notizie più importanti sull'Innovazione. Iscriviti per riceverle via e-mail.