> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Viste

> Come creare le viste di Laravel e restituirle da route e controller, e come passare loro i dati.

## 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](/it/blade).

```blade theme={null}
<!-- 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`.

```php theme={null}
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.

```shell theme={null}
php artisan make:view greeting
```

L'estensione `.blade.php` comunica al framework che quel file contiene un [template Blade](/it/blade).

## Come restituire una vista

Una volta creata la vista, puoi restituirla da una route o da un controller usando l'helper globale `view`.

```php theme={null}
Route::get('/', function () {
    return view('greeting', ['name' => 'Taro']);
});
```

Puoi restituirla anche usando la facade `View`.

```php theme={null}
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ì:

```php theme={null}
return view('admin.profile', $data);
```

<Warning>
  I nomi delle directory delle viste non devono contenere il carattere `.`.
</Warning>

### 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.

```php theme={null}
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`.

```php theme={null}
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.

```php theme={null}
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.

```php theme={null}
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 theme={null}
<?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.

```shell theme={null}
php artisan view:cache
```

Per svuotare la cache delle viste usa il seguente comando:

```shell theme={null}
php artisan view:clear
```

## Prossimi passi

<Card title="Template Blade" icon="code" href="/it/blade">
  Impara a costruire viste dinamiche con la sintassi di Blade.
</Card>


## Related topics

- [Test HTTP](/it/http-tests.md)
- [Template Blade](/it/blade.md)
- [Bundle degli asset con Vite](/it/vite.md)
- [Routing](/it/routing.md)
- [Laravel MCP](/it/mcp.md)
