Cosa sono le direttive Blade e come si usano in Laravel con esempi

Come sviluppatore Laravel, se desideri migliorare la leggibilità e la manutenibilità del front-end delle tue applicazioni, allora devi approfondire l’uso delle direttive Blade.
Le direttive Blade Laravel sono un potente strumento che ti consente di semplificare i tuoi modelli e renderli più espressivi.
In questo articolo approfondiremo le direttive Blade Laravel, impareremo come creare direttive personalizzate ed esploreremo alcuni casi d’uso pratici.
Tempo di lettura stimato: 4 minuti
Cosa sono le Direttive Blade?
Blade è il motore di template fornito in bundle con il framework PHP Laravel. Le direttive blade sono un modo per incorporare il codice PHP nei modelli di visualizzazione mantenendo una sintassi pulita e leggibile. Forniscono un modo conveniente per includere contenuti logici e dinamici nelle tue visualizzazioni.
Direttive Blade
Vediamo alcune delle direttive Blade integrate fornite da Laravel.
@if, @else, e @endif
@if($condition)
// Content to display if condition is true
@else
// Content to display if condition is false
@endifPuoi utilizzare queste direttive per visualizzare in modo condizionale il contenuto in base a una determinata condizione.
@switch, e @endswitch
@switch($i)
@case(1)
First case...
@break
@case(2)
Second case...
@break
@default
Default case...
@endswitch@foreach
@foreach($items as $item)
// Content to display for each item
@endforeachQuesta direttiva esegue un’iterazione su un array o una raccolta e consente di elaborare il contenuto per ciascun elemento nel ciclo.
@for, @endfor
@for ($i = 0; $i < 10; $i++)
The current value is {{ $i }}
@endforQuesta direttiva esegue un’iterazione su un array e consente di elaborare il contenuto per ciascun elemento nel ciclo.
@while e @endwhile
@while (true)
<p>I'm looping forever.</p>
@endwhileQuesta direttiva esegue un’iterazione per condizione, l’iterazione termina quando la condizione è falsa.
@continue, @break
@foreach ($users as $user)
@if ($user->type == 1)
@continue
@endif
<li>{{ $user->name }}</li>
@if ($user->number == 5)
@break
@endif
@endforeachQuando usi i cicli puoi anche saltare l’iterazione corrente o terminare il ciclo usando le direttive @continue e @break
Variabili del Loop: $loop->first, $loop->last
Durante l’iterazione di un ciclo, una variabile $loop fornisce l’accesso ad alcune informazioni utili come l’indice del ciclo corrente e se questa è la prima o l’ultima iterazione del ciclo:
@foreach ($users as $user)
@if ($loop->first)
This is the first iteration.
@endif
@if ($loop->last)
This is the last iteration.
@endif
<p>This is user {{ $user->id }}</p>
@endforeachSe ti trovi in un ciclo annidato, puoi accedere alla variabile $loop del ciclo genitore tramite la proprietà genitore:
@foreach ($users as $user)
@foreach ($user->posts as $post)
@if ($loop->parent->first)
This is the first iteration of the parent loop.
@endif
@endforeach
@endforeachCi sono anche informazioni che possiamo avere tramite la variabile $loop, le puoi trovare nella documentazione ufficiale Laravel.
@unless e @endunless
@unless (Auth::check())
You are not signed in.
@endunless@isset, @endisset
@isset($records)
// $records is defined and is not null...
@endisset@empty, @endempty
@empty($records)
// $records is "empty"...
@endempty@include
@include('partials.header')Includi un’altra vista Blade nella vista corrente. Questo aiuta a modularizzare i tuoi modelli.
@extends, @section
@extends('layouts.app')
@section('content')
// Content specific to this view
@endsectionQueste direttive vengono utilizzate per creare ed estendere i layout. @extends specifica il layout da cui ereditare e definisce @section il contenuto da sostituire nel layout.
Creazione di direttive blade personalizzate
Laravel ti consente di creare direttive Blade personalizzate per semplificare ulteriormente le tue visualizzazioni.
Vediamo come creare le direttive custom:
Definire una direttiva personalizzata:
per definire una direttiva Blade personalizzata, sarà necessario registrarla presso un Service Provider. Innanzitutto, crea un service provider o utilizzane uno esistente. Nel metodo boot del tuo provider, utilizza la facade Blade per definire la tua direttiva personalizzata.
use Illuminate\Support\Facades\Blade;
public function boot()
{
Blade::directive('mydirective', function ($expression) {
return "<?php // Your custom logic here ?>";
});
}Stiamo definendo una direttiva chiamata @mydirective. Quando questa direttiva viene utilizzata in un modello Blade, verrà eseguita la logica all’interno della closure.
Utilizzo della direttiva personalizzata:
ora che hai definito la direttiva personalizzata, puoi utilizzarla nei tuoi modelli Blade in questo modo:
@mydirective($parameter)Sostituisci con $parameter tutti i dati richiesti che devi trasmettere alla tua direttiva.
Casi pratici di utilizzo
Esploriamo alcuni casi d’uso pratici per le direttive Blade personalizzate.
Classi CSS condizionali:
puoi creare una direttiva che genera classi CSS in base alle condizioni:
Blade::directive('classIf', function ($expression) {
list($condition, $class) = explode(',', $expression);
return "<?php echo ($condition) ? '$class' : ''; ?>";
});Ora, nel tuo modello Blade, puoi applicare in modo condizionale classi CSS come queste:
<div class="@classIf($user->isAdmin, 'admin')">...</div>3.2 Internazionalizzazione:
creare una direttiva per la traduzione del testo può rendere le tue opinioni più concise:
Blade::directive('trans', function ($expression) {
return "<?php echo __('$expression'); ?>";
});Usalo in questo modo:
<p>@trans('messages.welcome')</p>Letture Correlate
Ercole Palmeri








