Diafragmaat
Schakel donker/licht modus D
logo Diafragmaat

Laravel blade Componenten.

1 jaar geleden

Technisch

Laravel

Waarom Laravel blade componenten gebruiken?

Laravel blade componenten zorgen ervoor dat je makkelijker overzicht houdt als je werkt in je blade views. Ze zijn vooral handig voor het bouwen van een consistente lay-out met herbruikbare elementen. Hierdoor wordt onderhoud makkelijker doordat je maar op 1 plek aanpassingen hoeft te doen.

Ik wordt altijd weer enthousiast als ik weer een component gebruik en hup, snel weer verder!

In dit blog, gaan we een "code blok" maken met een balk aan de bovenkant voor extra informatie. De component gaan we gelijk meerdere malen herhalen op deze pagina voor uitleg over blade componenten. De stijl van het code blok is gedaan met tailwind, en ziet er als volgt uit:

...
...

1. Een blade component maken.

Het volgende commando voer je uit op de command line, in de directory van de Laravel installatie.

Shell zsh in de Laravel directory.
php artisan make:component code --view

Dit commando heeft een view-only component gemaakt. Je vindt het nieuwe code.blade.php bestand in resources/views/components/.

1. Een blade component maken.

Het volgende commando voer je uit op de command line, in de directory van de Laravel installatie.

Shell zsh in de Laravel directory.
php artisan make:component code --view

Dit commando heeft een view-only component gemaakt. Je vindt het nieuwe code.blade.php bestand in resources/views/components/.

2. De blade component vullen met de opmaak.

We bouwen het skelet voor de component, en passen styling toe met behulp van Tailwind CSS.

resources/views/components/code.blade.php.
<pre class='text-gray-700 bg-gray-200 shadow-sm rounded-xl dark:text-gray-200 dark:bg-black dark:shadow-gray-300/20'>
<div class="relative flex items-center justify-between px-4 py-2 font-sans text-sm bg-gray-300 dark:bg-gray-800 rounded-t-xl">
<span>...</span>
</div>
<div class="p-4 overflow-auto ">
<code class="whitespace-pre!">...</code>
<div>
</pre>
3. De component aanroepen in de view met named slots.

We gebruiken de "x-code" notatie om de component in te voegen. Merk op dat we Tussen die x-code "named slot components" geïntegreerd hebben zoals <x-slot:title> en <x-slot:content>.

We gebruiken slots om aanpassing van de componentinhoud mogelijk te maken.

resources/views/blog/laravel-componenten.blade.php.
....
<x-code>
<x-slot:title>resources/views/blog/laravel-componenten.blade.php.</x-slot:title>
<x-slot:content>...</x-slot:content>
</x-code>
....

4. Variabele gegevens naar de component sturen met "named slots"

We hebben in ons component dus 2 named slots; title en content. Voor de titel van ons code blok, plaatsen de variabele gegevens tussen de open <x-slot:title> en de de sluit </x-slot:title>. Ditzelfde gebeurt bij het <x-slot:content>.

5. Definiëren van de named variabele slot in de component.

De variabele $title word gevuld met de gegevens die tussen de open <x-slot:title> en de de sluit </x-slot:title> van de view staan.

resources/views/components/code.blade.php
....
<x-code>
...
<span>{{ $title ?? '...' }}</span>
...
<span>{{ $content ?? '...' }}</span>
...
</x-code>
....

In het component bestand vullen we de variabele in met {{ $title ?? '...' }} In geval we geen titel variabele meegeven, vullen we met de ?? conditie '...' in.

Extra: Samenvoegen van (css) klassen met $attributes->merge.

Met de css klassen volledig in de blade component, kan het soms handig zijn klassen toe te voegen in de view. We doen dit door de Laravel "$attributes->merge" methode te gebruiken in de component. We typen dit op de volgende manier:

resources/views/components/code.blade.php
<pre {{ $attributes->merge(['class' => 'text-gray-700 bg-gray-200 rounded-xl']) }}>

Daarna voegen we tailwind css classes zoals we altijd doen in de view: "class="border-2 border-green-300" en krijgen de groene rand om ons component.

resources/views/blog/laravel-componenten.blade.php.
....
<x-code class="border-2 border-green-300">
...
</x-code>
....
Eh voila! Tips voor toepassen in het wild!
  • Houd de componenten klein en gefocust op één enkele verantwoordelijkheid.
  • Gebruik named slots om aanpassing van de componentinhoud mogelijk te maken.
  • Documenteer componenten goed, vooral als ze door andere teamleden worden gebruikt.

Componenten met (named) slots zijn ideaal om consistentie en overzicht te bewaren en onderhoud te vereenvoudigen. Bij gebruik van componenten wordt o.a. de lay-out niet meer herhaald. Dit draagt bij aan de werkwijze WOO (Write Only Once) of ook wel DRY (Don't Repeat Yourself) principe. Maar goed, ik val in herhaling 😊

Door Guido

eigenaar Diafragmaat

Uit het blog

1 maand geleden
creatief
schrijven

Schrijven vanuit je hart

"Maar misschien nog wel het allerbelangrijkste is het gewoon te doen, niet luisteren naar die innerlijke criticus die je al blokkeert voordat je begint. Pak die pen of dat toetsenbord en..."
logo
Door Noortje Zuidema
schrijver
5 maanden geleden
a.i.
s.e.o.

Bestaat SEO in 2025 nog?

"SERP, ofwel de zoekresultaten pagina's, worden meer en meer door AI gegenereerd. SEO ofwel Search Engine Optimalisatie, gaat daarom een steeds kleinere rol spelen. Wat gaat er veranderen jouw website?"
Door Guido
eigenaar Diafragmaat
9 maanden geleden
socials
s.e.o.

Delen? OG tag toch!

"OG, ofwel Open Graph is een set van afspraken die het delen van inhoud, op sociale media defineerd. Maar is het eigenlijk wel de moeite waard om dit te doen?"
Door Guido
eigenaar Diafragmaat
1 jaar geleden
technisch
a.i.
s.e.o.

Ai ai aii! SEO!

"SEO, het slimme neefje op het internetmarketingfeestje staat tegenwoordig pal naast AI. Samen maken onderdeel uit van de digitale VIP's!"
Door Guido
eigenaar Diafragmaat
1 jaar geleden
technisch
Laravel

Blade componenten - WOO!

"De blade componenten van Laravel zorgen voor overzicht, uniformiteit, en vooral ook snelheid. We gaan er vandaag een maken en gelijk toepassen op de pagina! We hanteren als zodanig de werkwijze WOO (Write Only Once). Of door de makers van Laravel, ook wel DRY (Don't Repeat Yourself) genoemd."
Door Guido
eigenaar Diafragmaat
1 jaar geleden
technisch
Livewire

Het is tijd voor tijd.

"Verre vakanties, vele verhalen, soms vreemde vogels, en vaak verzetten. Bij het verzetten, gaat het dan over de klok. Ik heb eens gekeken hoe we het verschil in tijdzone het beste kunnen uitleggen op een webpagina. Al doende kwam ik op het idee een live wereldklok te maken die ook verschillen in de zomer & wintertijd bijhoudt."
Door Guido
eigenaar Diafragmaat