Blade est un moteur de template simple et puissant écrit par Taylor Otwell, créateur de Laravel. Nous verrons ensemble les différentes possibilités qu'il offre, ainsi que ses petites particularités et nous jetterons un œil rapide sous le capot afin de comprendre son mode de fonctionnement.
12. Moteur de template de Laravel
Inspiré de Razor, moteur de template ASP.NET
Conçu pour être rapide, puissant et flexible
Le moteur n'est pas disponible en standalone
-> On peut l'utiliser en dehors du framework
14. // dans un contrôleur
return view('my.template', [
'hello' => 'world',
'someHtml' => 'I'm <strong>strong</strong>'
]);
15. Le fichier est my/template/resources/views/ .blade.php
1er argument : chemin vers le template
2nd argument : variables pour le template
16. Semblable à la plupart des moteurs
Bonus
ECHOING
{{ $hello }} // htmlentities
{!! $someHtml !!} // raw
Nous sommes le {{ date('d/m/Y') }}
{{ isset($name) ? $name : 'Julien' }}
// =>
{{ $name or 'Julien' }}
17. Vous pouvez utiliser du PHP
<?= e($hello) ?> // shortcut pour htmlentities
<?= $hello ?>
19. Le classique if
Et son cousin le unless (if not)
@if($age >= 18)
Tu es majeur
@elseif($age >= 13)
Tu es un ado
@else
Tu es un enfant
@endif
@unless($user->isAdmin())
Vous n'êtes pas administrateur
@endunless
20. Boucles
Le bonus
@for ($i = 0; $i < 10; $i++)
{{ $i }}
@endfor
@while (true)
<p>Ne tentez pas cela à la maison.</p>
@endwhile
@foreach ($users as $user)
<p>Utilisateur n°{{ $user->id }}</p>
@endforeach
@forelse ($users as $user)
<li>{{ $user->name }}</li>
@empty
<p>Aucun utilisateur</p>
@endforelse
22. Inclure un partial depuis un template
@include('my.second.template')
@include('my.second.template', ['var' => 'value'])
23. Bonus : les partials de boucle
<h3>Liste de vos contacts :</h3>
@each('contacts.card', $contacts, 'contact')
@each('contacts.card', $contacts, 'contact', 'contacts.empty')
25. Laravel Related
@inject('stats', 'service.stats')
{{ $stats->onlineVisitors() }}
@lang('pagination.next')
@can('users.create')
Ajouter un utilisateur
@endcan
@cannot('users.create')
Vous ne pouvez pas ajouter un utilisateur
@endcannot
32. Compiler les instructions blade en instructions PHP.
Isoler le code blade du code PHP
Traiter le code blade
Compilation des instructions
Compilation des commentaires
Compilation des echos