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.Niet-geëscapete data weergeven
Als je het escapen wilt overslaan, gebruik je de{!! !!}-syntax.
Samenwerken met JavaScript-frameworks
Als je JavaScript-framework ook accolades gebruikt, kun je met het@-symbool de Blade-rendering overslaan.
@, 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)
@unless kun je ook een “tenzij”-conditie schrijven.
@isset en @empty.
Authenticatie-directives
Switch-statements
Loops
Blade biedt handige directives voor het werken met loops.@break en @continue.
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.Layouts met template-overerving
Als klassieke methode bestaat er template-overerving met@extends, @section en @yield.
De bovenliggende layout definiëren:
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.
CSRF-beveiliging voor formulieren
Neem in HTML-formulieren diePOST-, PUT-, PATCH- of DELETE-requests versturen in het web-routebestand altijd de @csrf-directive op.
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.Data weergeven
Data weergeven
{{ $variable }} voor weergave met escaping, {!! $variable !!} voor weergave zonder escaping.Conditionele statements
Conditionele statements
@if, @elseif, @else, @endif, @unless, @isset, @empty, @auth, @guest.Loops
Loops
@for, @foreach, @forelse, @while en besturing via de $loop-variabele.Layouts
Layouts
Op componenten gebaseerd (
<x-layout> en {{ $slot }}) of template-overerving (@extends, @section, @yield).Subviews
Subviews
Met
@include sluit je views in als herbruikbare onderdelen.