Skip to main content

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.
Oltre alle variabili, puoi mostrare anche il risultato di funzioni PHP.

Visualizzazione senza escape

Per omettere l’escape usa la sintassi {!! !!}.
Quando mostri dati inseriti dagli utenti, usa sempre {{ }} per abilitare l’escape automatico. Usare {!! !!} su input non affidabili porta a vulnerabilità XSS.

Convivenza con i framework JavaScript

Se anche il framework JavaScript usa le parentesi graffe, il simbolo @ fa saltare il rendering di Blade.
In questo caso @ 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)

Con @unless scrivi la condizione “a meno che”.
Per verificare se una variabile è definita o non vuota usa @isset e @empty.

Direttive di autenticazione

Switch

Cicli

Blade fornisce direttive comode per i cicli.
Nei cicli puoi usare @break e @continue.
Puoi anche passare la condizione direttamente alla direttiva.

Variabile del ciclo

Dentro un ciclo @foreach, la variabile $loop fornisce informazioni sul ciclo.

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.
Poi crea una vista che utilizza questo layout.

Layout con ereditarietà di template

Come approccio classico esiste l’ereditarietà con @extends, @section e @yield. Definizione del layout padre:
Vista figlia con ereditarietà del layout:
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.
Puoi passare anche variabili aggiuntive.

Protezione CSRF dei form

Nei form HTML che inviano richieste POST, PUT, PATCH o DELETE alle route web, includi sempre la direttiva @csrf.
Per inviare richieste 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 delle principali funzionalità di Blade.
{{ $variable }} per la visualizzazione con escape, {!! $variable !!} senza escape.
@if, @elseif, @else, @endif, @unless, @isset, @empty, @auth, @guest.
@for, @foreach, @forelse, @while con controllo tramite la variabile $loop.
Basati su componenti (<x-layout> e {{ $slot }}) o ereditarietà di template (@extends, @section, @yield).
@include per incorporare viste come frammenti riutilizzabili.
Ultima modifica il 13 luglio 2026