Skip to main content

Introductie

Blade is de eenvoudige maar krachtige template-engine die bij Laravel wordt geleverd. In tegenstelling tot sommige PHP-template-engines beperkt Blade het gebruik van gewone PHP-code in je templates niet. Alle Blade-templates worden gecompileerd naar PHP-code en gecachet, waardoor Blade vrijwel geen overhead aan je applicatie toevoegt. Blade-templatebestanden gebruiken de extensie .blade.php en worden meestal opgeslagen in de map resources/views.

De Blade-compilatieflow

Hieronder zie je hoe een .blade.php-bestand wordt omgezet in een HTML-response. Eenmaal gecompileerde bestanden worden gecachet, zodat bij een tweede en volgende request van dezelfde template de compilatie wordt overgeslagen.

Data weergeven

Om data weer te geven die aan een Blade-view is doorgegeven, plaats je de variabele tussen dubbele accolades.
Blades {{ }} haalt de waarde automatisch door PHP’s htmlspecialchars-functie om XSS-aanvallen te voorkomen.
Je kunt niet alleen variabelen weergeven, maar ook het resultaat van PHP-functies.

Niet-geëscapete data weergeven

Als je het escapen wilt overslaan, gebruik je de {!! !!}-syntax.
Gebruik bij het weergeven van door gebruikers ingevoerde data altijd {{ }} om automatisch escapen in te schakelen. Het gebruik van {!! !!} met niet-vertrouwde invoer leidt tot XSS-kwetsbaarheden.

Samenwerken met JavaScript-frameworks

Als je JavaScript-framework ook accolades gebruikt, kun je met het @-symbool de Blade-rendering overslaan.
In dit geval verwijdert Blade de @, maar wordt {{ name }} ongewijzigd naar de browser gestuurd en gerenderd door het JavaScript-framework.
Wil je vergelijken of je bij Blade blijft of uitbreidt naar Livewire of Inertia? Zie dan Frontend.

Blade-directives

Conditionele statements (if)

Met @unless kun je ook een “tenzij”-conditie schrijven.
Om te controleren of een variabele gedefinieerd is en niet null, of juist “leeg” is, gebruik je @isset en @empty.

Authenticatie-directives

Switch-statements

Loops

Blade biedt handige directives voor het werken met loops.
Binnen een loop kun je de loop besturen met @break en @continue.
Je kunt de conditie ook rechtstreeks aan de directive doorgeven.

De loop-variabele

Binnen een @foreach-loop kun je met de $loop-variabele informatie over de loop opvragen.

Commentaar

Blade-commentaar wordt niet opgenomen in de gerenderde pagina.

Layouts

Layouts met componenten

Voor het bouwen van layouts in Laravel wordt het gebruik van Blade-componenten aanbevolen. Maak eerst een layoutcomponent aan.
Maak vervolgens een view die deze layout gebruikt.

Layouts met template-overerving

Als klassieke methode bestaat er template-overerving met @extends, @section en @yield. De bovenliggende layout definiëren:
De layout overerven in een child view:
Met @parent kun je content toevoegen terwijl de inhoud van de @section uit de bovenliggende layout behouden blijft.

Subviews includen

Met de @include-directive kun je een Blade-view in een andere view insluiten. Alle variabelen die beschikbaar zijn in de bovenliggende view, zijn ook beschikbaar in de geïncludede view.
Je kunt ook extra variabelen doorgeven.

CSRF-beveiliging voor formulieren

Neem in HTML-formulieren die POST-, PUT-, PATCH- of DELETE-requests versturen in het web-routebestand altijd de @csrf-directive op.
Om PUT-, PATCH- of DELETE-requests vanuit een formulier te versturen, gebruik je de @method-directive.
Voor CSRF-maatregelen in productie, inclusief Origin-verificatie en de headers X-CSRF-TOKEN / X-XSRF-TOKEN, zie CSRF-beveiliging.

Samenvatting

Een overzicht van de belangrijkste functies van de Blade-template-engine.
{{ $variable }} voor weergave met escaping, {!! $variable !!} voor weergave zonder escaping.
@if, @elseif, @else, @endif, @unless, @isset, @empty, @auth, @guest.
@for, @foreach, @forelse, @while en besturing via de $loop-variabele.
Op componenten gebaseerd (<x-layout> en {{ $slot }}) of template-overerving (@extends, @section, @yield).
Met @include sluit je views in als herbruikbare onderdelen.
Laatst gewijzigd op 6 september 2026