Vai al contenuto principale

Introduzione

Restituire un intero documento HTML come stringa da route o controller non è realistico. Con le viste puoi scrivere tutto l’HTML in file indipendenti. Le viste separano la logica del controller e dell’applicazione dalla logica di presentazione e sono conservate nella directory resources/views. In Laravel le viste vengono di norma scritte usando il linguaggio di template Blade.
<!-- resources/views/greeting.blade.php -->
<html>
    <body>
        <h1>Ciao, {{ $name }}</h1>
    </body>
</html>
Questa vista è memorizzata in resources/views/greeting.blade.php e puoi restituirla usando l’helper globale view.
Route::get('/', function () {
    return view('greeting', ['name' => 'Taro']);
});

Creazione di una vista

Per creare una vista posiziona un file con estensione .blade.php nella directory resources/views oppure usa un comando Artisan.
php artisan make:view greeting
L’estensione .blade.php comunica al framework che quel file contiene un template Blade.

Come restituire una vista

Una volta creata la vista, puoi restituirla da una route o da un controller usando l’helper globale view.
Route::get('/', function () {
    return view('greeting', ['name' => 'Taro']);
});
Puoi restituirla anche usando la facade View.
use Illuminate\Support\Facades\View;

return View::make('greeting', ['name' => 'Taro']);
Il primo argomento dell’helper view corrisponde al nome del file della vista all’interno della directory resources/views. Il secondo argomento è un array di dati resi disponibili all’interno della vista.

Directory di viste annidate

Le viste possono essere annidate in sottodirectory di resources/views. Per riferirti a una vista annidata usa la notazione “punto”. Ad esempio, una vista salvata in resources/views/admin/profile.blade.php si restituisce così:
return view('admin.profile', $data);
I nomi delle directory delle viste non devono contenere il carattere ..

Restituire la prima vista esistente

Con il metodo first della facade View puoi restituire la prima vista esistente all’interno di un array di viste.
use Illuminate\Support\Facades\View;

return View::first(['custom.admin', 'admin'], $data);

Verificare l’esistenza di una vista

Per verificare se una vista esiste usa il metodo exists della facade View.
use Illuminate\Support\Facades\View;

if (View::exists('admin.profile')) {
    // ...
}

Passare dati a una vista

Come visto nell’esempio precedente, puoi passare un array di dati alla vista e usarli al suo interno.
return view('greetings', ['name' => 'Hanako']);
Con questo metodo i dati devono essere un array di coppie chiave-valore. All’interno della vista puoi accedere a ciascun valore tramite la sua chiave. Puoi anche aggiungere dati singolarmente con il metodo with. Il metodo with restituisce l’istanza dell’oggetto vista, quindi puoi concatenare i metodi.
return view('greeting')
    ->with('name', 'Hanako')
    ->with('occupation', 'Ingegnere');

Condividere dati con tutte le viste

Se vuoi condividere dati con tutte le viste, usa il metodo share della facade View. Solitamente lo si scrive nel metodo boot di un service provider.
<?php

namespace App\Providers;

use Illuminate\Support\Facades\View;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap dei servizi dell'applicazione
     */
    public function boot(): void
    {
        View::share('appName', 'MyApp');
    }
}

Ottimizzazione delle viste

Per impostazione predefinita, le viste dei template Blade vengono compilate su richiesta. Poiché la compilazione della vista avviene al momento della richiesta, ciò può avere un piccolo impatto sulle prestazioni. Con il comando Artisan view:cache puoi precompilare tutte le viste utilizzate dall’applicazione. È consigliato eseguirlo come parte del processo di deploy.
php artisan view:cache
Per svuotare la cache delle viste usa il seguente comando:
php artisan view:clear

Prossimi passi

Template Blade

Impara a costruire viste dinamiche con la sintassi di Blade.
Ultima modifica il 13 luglio 2026