Blade est un moteur de template assez puissant, et il serait dommage de le sous-exploiter au démarrage d’un nouveau projet.
Je préféré même pas évoquer ce que contient Laravel comme point de départ https://github.com/laravel/laravel 🙂 . Il faut se tourner impérativement vers les starter-kits. Ils partent d’un layout principal en général dans app/views/front/layouts/defaut.blade.php
Il débute par :
<!DOCTYPE html> <html lang="fr">
le « fr » peur être remplacé par une variable : bzh ! suis breton 🙂
<head>
l<title>
@section('title') titre general du site Laravel 4 @show
Nous devons créer une section, car ce titre doit être unique pour chaque page, étant très très important pour les moteurs de recherche, il est généralement de la forme :
titre particulier de la page – [titre de la catégorie] – titre général du site
titre général du site – [titre de la catégorie] – titre particulier de la page
Cette section sera surchargée dans toutes les vues, le titre général du site lui, peut être dans le dossier Lang.
</title>
<style>
@section('style') @show
ici, nous nous donnons la possibilité de créer un style inline pour une vue unique.
</style>
@section('seo') <meta name="keywords" content="" > <meta name="description" content="" > <link ... > @show
Ici, nous nous donnons la possibilité d’ajouter des balises html particulières pour du référencement.
Pas un mot sur l’insertion de(s) feuille(s) de style 🙂 , elles dépendant de l’environnement, du framework, vous utilisez Basset ou asset …
Perso, je préfère utiliser un fichier externe : @include(‘assets-css’), ce fichier va tester si je suis en prod ou en local et charger les bons fichiers compilées ou non, en CDN ou non.
</head>
<body>
une zone de menu, une zone de notifications et du contenu
@include('front.nav-bar') @include('notifications') @yield('content')
partie unique a chaque projet !
<script>
@section('script') @show
ici, nous nous donnons la possibilité d’utiliser du javascript pour une vue unique, pour de l’ajax ?
</script>
un petit @include(‘assets-js’) en plus ?
</body>
De plus, dans body nous pouvons aussi utiliser des attibuts html5 data-
data-key="value"
écrire par exemple <body data-dossier= »@yield(‘dossier’) »> pour afficher un fond d’écran particulier(oops pas bon cet exemple) ou, <nav data-itemselect= »client »> pour cocher le bon item dans le menu.
Et voila, nous sommes parés pour avoir un projet qui s’adaptera a beaucoup de nos futures exigences html et css.
Une vue type
Avec tout ca, une vue donnera :
@extends('front/layouts/defaut') @section('style') @parent body { } @stop @section('script') @parent $('.titre').css('color','#000'); @stop @section('title') {{$item->titre}}.{{Lang::get('frontend/pages.about-us.title')}} @stop {{-- <nav data-@yield('data-dossier')> --}} @section('data-dossier') dossier="about" @stop {{-- enfin le contenu de la Page --}} @section('content') ...<hr>... @stop
.