Mejore sus vistas con directivas de Blade personalizadas en Laravel

  • Publicado el 22 agosto, 2024
  • Palabras: 280

Blade, el potente motor de plantillas de Laravel, ofrece una sintaxis clara y expresiva para tus vistas. Si bien viene con muchas directivas integradas, puedes ampliar su funcionalidad creando directivas personalizadas. Exploremos cómo implementar y usar directivas Blade personalizadas para una lógica de vista reutilizable.

Mejore sus vistas con directivas de Blade personalizadas en Laravel

#Creación de una directiva Blade personalizada

 

Las directivas Blade personalizadas se definen en un proveedor de servicios. Puedes utilizar el AppServiceProvider o crear un proveedor dedicado para sus extensiones Blade.

 

En el método boot de su proveedor de servicios:

 

use IlluminateSupportFacadesBlade;

public function boot()
{
    Blade::directive('price', function ($expression) {
        return "<?php echo '€' . number_format($expression, 2); ?>";
    });
}

 

Esto crea una directiva @price que formatea un número como un precio con un símbolo de euro y dos decimales.

 

#Uso de la directiva personalizada

 

En tus plantillas Blade, ahora ya puedes usar la nueva directiva:

 

<p>Precio del producto: @price($product->price)</p>

 

Si $product->price es 29,99, el resultado será: "Precio del producto: 29,99 €"

 

#Directivas más complejas

 

Puede crear directivas más complejas que acepten múltiples parámetros:

 

Blade::directive('currency', function ($expression) {
    list($amount, $currency) = explode(',', $expression);
    return "<?php echo currency($amount, $currency); ?>";
});

 

Uso en una plantilla:

 

<p>Precio en USD: @currency($product->price, 'USD')</p>

 

#Directivas con bloques

 

También puedes crear directivas que funcionen con bloques de contenido:

 

Blade::directive('ifadmin', function () {
    return "<?php if(auth()->check() && auth()->user()->isAdmin()): ?>";
});

Blade::directive('endifadmin', function () {
    return "<?php endif; ?>";
});

 

Uso en la plantilla

 

@ifadmin
    <a href="/admin">Admin Panel</a>
@endifadmin

 

#Componentes de interfaz de usuario reutilizables

 

Las directivas personalizadas son excelentes para crear componentes de interfaz de usuario reutilizables:

 

Blade::directive('button', function ($expression) {
    list($text, $type) = explode(',', $expression);
    $type = trim($type, "' ");
    return "<?php echo '<button class="btn btn-$type">' . $text . '</button>'; ?>";
});

 

Uso:

 

@button('Submit', 'primary')
@button('Cancel', 'secondary')

 

#Consideraciones de rendimiento

 

Las directivas Blade personalizadas se compilan y almacenan en caché, por lo que no agregan una sobrecarga significativa a su aplicación. Sin embargo, para una lógica muy compleja, considere usar View Composers o clases dedicadas.

Antonio Jenaro

Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión