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

# Views

> Leer hoe je views maakt in Laravel, ze retourneert vanuit routes of controllers en hoe je data doorgeeft.

## Introductie

Het is niet realistisch om vanuit routes of controllers een compleet HTML-document als string te retourneren.
Met views kun je alle HTML in aparte bestanden schrijven.

Views scheiden je controller- en applicatielogica van je presentatielogica en worden opgeslagen in de directory `resources/views`.
In Laravel schrijf je views doorgaans met de [Blade-templatetaal](/nl/blade).

```blade theme={null}
<!-- resources/views/greeting.blade.php -->
<html>
    <body>
        <h1>Hallo, {{ $name }}</h1>
    </body>
</html>
```

Deze view is opgeslagen in `resources/views/greeting.blade.php` en kun je retourneren met de globale `view`-helper.

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

## Views maken

Om een view te maken plaats je een bestand met de extensie `.blade.php` in de directory `resources/views`, of gebruik je een Artisan-commando.

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

De extensie `.blade.php` vertelt het framework dat het bestand een [Blade-template](/nl/blade) bevat.

## Views retourneren

Zodra je een view hebt gemaakt, kun je die vanuit een route of controller retourneren met de globale `view`-helper.

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

Je kunt ook de `View`-facade gebruiken.

```php theme={null}
use Illuminate\Support\Facades\View;

return View::make('greeting', ['name' => 'Taro']);
```

Het eerste argument van de `view`-helper komt overeen met de bestandsnaam van de view in de directory `resources/views`.
Het tweede argument is een array met data die beschikbaar wordt gemaakt in de view.

### Geneste view-directories

Views kun je nesten in subdirectories van `resources/views`.
Om een geneste view te refereren gebruik je de "puntnotatie".

Een view die is opgeslagen in `resources/views/admin/profile.blade.php` retourneer je bijvoorbeeld zo:

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

<Warning>
  Gebruik geen `.`-teken in de directorynamen van views.
</Warning>

### De eerste bestaande view retourneren

Met de `first`-methode van de `View`-facade retourneer je de eerste view uit een array die bestaat.

```php theme={null}
use Illuminate\Support\Facades\View;

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

### Controleren of een view bestaat

Om te controleren of een view bestaat, gebruik je de `exists`-methode van de `View`-facade.

```php theme={null}
use Illuminate\Support\Facades\View;

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

## Data doorgeven aan views

Zoals in de vorige voorbeelden te zien is, kun je een array met data doorgeven aan een view en die data binnen de view gebruiken.

```php theme={null}
return view('greetings', ['name' => 'Hanako']);
```

Bij deze aanpak moet de data een array van sleutel-waardeparen zijn.
Binnen de view benader je elke waarde via de bijbehorende sleutel.

Met de `with`-methode kun je ook afzonderlijke datastukken toevoegen.
De `with`-methode retourneert een instantie van het view-object, zodat je methodes kunt chainen.

```php theme={null}
return view('greeting')
    ->with('name', 'Hanako')
    ->with('occupation', 'Engineer');
```

## Data delen met alle views

Wil je data delen met alle views, gebruik dan de `share`-methode van de `View`-facade.
Meestal doe je dit in de `boot`-methode van een serviceprovider.

```php theme={null}
<?php

namespace App\Providers;

use Illuminate\Support\Facades\View;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Applicatieservices opstarten
     */
    public function boot(): void
    {
        View::share('appName', 'MyApp');
    }
}
```

## Views optimaliseren

Standaard worden Blade-templateviews on-demand gecompileerd.
Omdat het compileren van de view tijdens het request plaatsvindt, kan dit de prestaties licht beïnvloeden.

Met het Artisan-commando `view:cache` compileer je vooraf alle views die je applicatie gebruikt.
We raden aan dit uit te voeren als onderdeel van je deployproces.

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

De viewcache leeg je met dit commando:

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

## Volgende stap

<Card title="Blade-templates" icon="code" href="/nl/blade">
  Leer hoe je met de Blade-syntaxis dynamische views bouwt.
</Card>


## Related topics

- [HTTP-tests](/nl/http-tests.md)
- [Laravel-packages ontwikkelen](/nl/advanced/package-development.md)
- [Responses](/nl/responses.md)
- [Routing](/nl/routing.md)
- [Assets bundelen met Vite](/nl/vite.md)
