BLADE
LARAVEL'S TEMPLATE ENGINE
JULIEN TANT
Développeur PHP Freelance - Craftyx
Passionné de Laravel
Fondateur de laravel.fr
Organisateur des meetups Laravel
Speaker
@TantJulien
BACK FROM CORFOU
PROJETS
Visiter l'île
Bosser sur ma présentation
Me reposer
Bronzer
L'ÎLE EST SUBLIME
ÉVOLUTION DU BRONZAGE
Avant : #FFDFC4
Après : #FFDFC4
J'AI CHOPPÉ UNE PHARYNGITE
LE FRAMEWORK
Créé par Taylor Otwell
Inspiré de nombreux framework
A Framework For Web Artisans
L'ECOSYSTÈME
DEVELOPER HAPPINESS FROM DOWNLOAD TO DEPLOY
Homestead
Laravel Framework / Lumen
Forge / Envoyer
Packages : Cashier, Socialite, Spark
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
UTILISATION HABITUELLE DANS
LARAVEL
// dans un contrôleur
return view('my.template', [
'hello' => 'world',
'someHtml' => 'I'm <strong>strong</strong>'
]);
Le fichier est my/template/resources/views/ .blade.php
1er argument : chemin vers le template
2nd argument : variables pour le template
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' }}
Vous pouvez utiliser du PHP
<?= e($hello) ?> // shortcut pour htmlentities
<?= $hello ?>
STRUCTURES
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
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
INCLUSION
Inclure un partial depuis un template
@include('my.second.template')
@include('my.second.template', ['var' => 'value'])
Bonus : les partials de boucle
<h3>Liste de vos contacts :</h3>
@each('contacts.card', $contacts, 'contact')
@each('contacts.card', $contacts, 'contact', 'contacts.empty')
DIVERS
{{-- Commentaire --}}
@{{ non compilé }}
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
LAYOUT
Layout (layouts/master.blade.php)
<html>
<body>
<header>
@yield('title')
</header>
@section('sidebar')
SIDEBAR
@show
<div class="container">
@yield('content')
</div>
</body>
</html>
Enfant (any/where/child.blade.php)
@extends('layouts.master')
@section('title', 'Ma super app')
@section('sidebar')
@parent
<p>Contenu ajouté à la sidebar.</p>
@endsection
@section('content')
<p>Contenu principal.</p>
@endsection
UNDER THE HOOD
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
Demo time
ISOLER LE CODE BLADE DU CODE PHP
MERCI
@TantJulien - Julien@craftyx.fr
MERCI À VOUS

Laravel Blade