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
@endif
Puoi 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
@endforeach
Questa 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 }}
@endfor
Questa 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>
@endwhile
Questa 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
@endforeach
Quando 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>
@endforeach
Se 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
@endforeach
Ci 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
@endsection
Queste 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