Introduzione
Blade è il semplice ma potente motore di template incluso in Laravel. A differenza di alcuni motori di template PHP, Blade non impone restrizioni sull’uso di codice PHP nudo all’interno dei template. Tutti i template Blade vengono compilati in codice PHP e memorizzati in cache, quindi Blade aggiunge un overhead trascurabile all’applicazione. I file di template Blade usano l’estensione.blade.php e di norma sono conservati nella directory resources/views.
Flusso di compilazione di Blade
Vediamo come un file.blade.php viene trasformato in una risposta HTML. I file compilati sono in cache: dalla seconda richiesta in poi la compilazione dello stesso template viene saltata.
Visualizzazione dei dati
Per visualizzare i dati passati a una vista Blade racchiudi la variabile in doppie parentesi graffe.{{ }} in Blade passa automaticamente la variabile attraverso htmlspecialchars di PHP per prevenire attacchi XSS.Visualizzazione senza escape
Per omettere l’escape usa la sintassi{!! !!}.
Convivenza con i framework JavaScript
Se anche il framework JavaScript usa le parentesi graffe, il simbolo@ fa saltare il rendering di Blade.
@ viene rimosso da Blade, ma {{ name }} arriva così com’è al browser, dove viene renderizzato dal framework JavaScript.
Se vuoi confrontare l’uso di Blade in autonomia con Livewire o Inertia, consulta Frontend.
Direttive Blade
Condizioni (if)
@unless scrivi la condizione “a meno che”.
@isset e @empty.
Direttive di autenticazione
Switch
Cicli
Blade fornisce direttive comode per i cicli.@break e @continue.
Variabile del ciclo
Dentro un ciclo@foreach, la variabile $loop fornisce informazioni sul ciclo.
| Proprietà | Descrizione |
|---|---|
$loop->index | Indice del ciclo corrente (da 0) |
$loop->iteration | Numero di iterazione (da 1) |
$loop->remaining | Iterazioni rimanenti |
$loop->count | Numero di elementi dell’array |
$loop->first | È la prima iterazione? |
$loop->last | È l’ultima iterazione? |
$loop->even | Iterazione pari? |
$loop->odd | Iterazione dispari? |
$loop->depth | Profondità di annidamento del ciclo corrente |
$loop->parent | Se il ciclo è annidato, la variabile del ciclo padre |
Commenti
I commenti Blade non compaiono nella pagina renderizzata.Layout
Layout con componenti
L’approccio consigliato per costruire i layout in Laravel è usare i componenti Blade. Crea prima un componente di layout.Layout con ereditarietà di template
Come approccio classico esiste l’ereditarietà con@extends, @section e @yield.
Definizione del layout padre:
Con
@parent puoi mantenere il contenuto della @section del layout padre e aggiungerne di nuovo.Inclusione di sotto-viste
Con la direttiva@include puoi incorporare una vista Blade in un’altra vista.
Tutte le variabili disponibili nella vista padre sono disponibili anche nella vista inclusa.
Protezione CSRF dei form
Nei form HTML che inviano richiestePOST, PUT, PATCH o DELETE alle route web, includi sempre la direttiva @csrf.
PUT, PATCH o DELETE da un form usa la direttiva @method.
Per la protezione CSRF pratica, inclusa la verifica dell’Origin e gli header
X-CSRF-TOKEN / X-XSRF-TOKEN, consulta Protezione CSRF.Riepilogo
Riepilogo delle principali funzionalità di Blade.Visualizzazione dei dati
Visualizzazione dei dati
{{ $variable }} per la visualizzazione con escape, {!! $variable !!} senza escape.Condizioni
Condizioni
@if, @elseif, @else, @endif, @unless, @isset, @empty, @auth, @guest.Cicli
Cicli
@for, @foreach, @forelse, @while con controllo tramite la variabile $loop.Layout
Layout
Basati su componenti (
<x-layout> e {{ $slot }}) o ereditarietà di template (@extends, @section, @yield).Sotto-viste
Sotto-viste
@include per incorporare viste come frammenti riutilizzabili.