Blade è il template engine del framework Laravel. In questo capitolo vedremo come utilizzarlo per le view del nostro e-commerce.
BladeOne: Blade in versione standalone
Dato che tale template engine è incluso in Laravel, dobbiamo utilizzare la sua versione standalone.
require_once ABSPATH . 'lib/bladeone/lib/BladeOne.php';
$views_directory = ABSPATH . 'views';
$cache_directory = ABSPATH . 'cache';
$blade = new \eftec\bladeone\BladeOne($views_directory,$cache_directory,\eftec\bladeone\BladeOne::MODE_DEBUG);
$template = 'home';
$vars = ['title' => 'Home Page'];
echo $blade->run($template, $vars);
BladeOne, struttura delle directory e nomi dei file
In questo esempio base notiamo che Blade ha bisogno di due specifiche directory per poter operare. La prima è la directory in cui verranno salvati temporaneamente i template compilati, mentre la seconda è la directory dove risiedono effettivamente i template delle view.
Il nome di ciascun file sarà del tipo nome.blade.php
, quindi nell'esempio visto in precedenza il nome del template sarà home.blade.php
.
Variabili e array
BladeOne supporta in modo completo la sintassi ed il funzionamento originario di Blade. Come si può notare, le variabili vengono passate al template tramite un array associativo. Quindi nella view home.blade.php
avremo:
<title>{{$title}}</title>
Sostanzialmente Blade acquisisce le variabili passate dal controller in un array associativo restituito dal metodo di rendering. Ciascuna chiave dell'array associativo rappresenta il nome della variabile nella view locale.
Blade supporta tutti i tipi di dati PHP ed include costrutti per il controllo del flusso e delle iterazioni. Inoltre gli include
all'interno delle view supportano il passaggio di ulteriori variabili locali:
@include('google-map', ['address' => 'Via San Michele 162, 66054 Vasto'])
Qui il parziale google-map
riceve a sua volta la variabile $address
che può essere usata al suo interno:
<div id="map" data-address="{{$address}}"></div>
Blade supporta anche l'uso del normale codice PHP o tramite i tag canonici o tramite un apposito blocco:
@php $address = 'Via San Michele 162, 66054 Vasto'; @endphp
<div id="map" data-address="{{$address}}"></div>
I blocchi
In Blade i blocchi che rappresentano costrutti del linguaggio PHP vengono potenziati con l'aggiunta di variabili di utility:
<ul>
@foreach($items as $item)
<li>
@if($loop->first)
<h1>{{$item}}</h1>
@else
<p>{{$item}}</p>
@endif
</li>
@endforeach
</ul>
La variabile $loop
viene creata su ogni loop di Blade e tiene traccia della posizione del cursore che viene sempre inizializzato in ogni blocco iterativo. Si tratta a tutti gli
effetti di un modo per evitare di dover creare manualmente contatori locali.
Fate riferimento alla documentazione ufficiale di Blade per un elenco completo delle caratteristiche presenti.
Conclusione
Blade, nella sua versione standalone, è sicuramente una feature che potremmo aggiungere al nostro e-commerce per tenerlo aggiornato con le più recenti caratteristiche dei framework PHP in uso.