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.
#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
Web Developer
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