banner-directivas-personalizadas-blade

Blade es un sistema de plantillas para PHP que viene integrado por defecto en el framework Laravel con el cual podemos entre otras cosas, crear plantillas, extenderlas, integrar o imprimir variables PHP sin perder el buen estilo del código de nuestra aplicación gracias al uso de etiquetas que nos provee.

Por ejemplo podemos utilizar estructuras de control como if, where, while, etc. de la siguiente manera:

@if(isset($foo))
    <h1>{{ $foo }}</h1>
@endif

esto es traducido a código PHP como:

<?php if(isset($foo)) { ?>
    <h1><?php echo $foo; ?></h1>
<?php } ?>

Como puedes ver, se trata de un cambio importante en cuanto al diseño del código.

Para más información sobre Blade te invito a ver el tutorial sobre Tutorial Básico de Blade, el sistema de plantillas de Laravel.

Laravel 5.1 nos ofrece una forma muy conveniente y sencilla de extender la funcionalidad de Blade agregando nuestras propias directivas o estructuras de control, lo que quiere decir que podemos crear etiquetas de blade personalizadas dependiendo de las necesidades de cada proyecto.

Esto nos permite tener aún más separada la lógica y las responsabilidades de cada componente, por ejemplo, si nuestra aplicación requiere dar formato a varios textos dentro de las plantillas como convertir a mayúsculas, minúsculas, eliminar espacios, etc. lo más conveniente tal vez sería crear un helper que permita llamar a este tipo de funciones como:

// $foo = 'Hello WORLD';

<h2>{{ upper($foo) }}</h2>

Y dentro de nuestra función helper algo así

public function upper($str) {
    // recibe 'Hello WORLD" y devuelve "HELLO WORLD"
    return strtoupper($str);
}

Puedes aprender a crear tus propios helpers en Laravel siguiendo el tutorial Cómo crear Helpers personalizados en Laravel.

Esto puede funcionar, es una función sencilla en realidad, pero si lo piensas un poco, tal vez sea un helper que requieras utilizar únicamente desde las vistas, no desde tus controladores u otras clases. Por tanto, para este caso podemos crear funciones que estén disponibles sólo en las vistas, es decir, directivas de Blade que nos ayuden a esto.

Para registrar estas nuevas directivas es muy sencillo, tan solo debes editar unas pocas líneas dentro del archivo App\Providers\AppServiceProvider.php. Primero debes incluir el componente Blade en la cabecera del documento:

use Blade;

Luego dentro de la funcion boot() definimos la nueva etiqueta:

    public function boot()
    {
        Blade::directive('upper', function($expression) {
            return "<?php echo strtoupper($expression); ?>";
        });
    }

Puedes hacer uso de las etiquetas de PHP en este paso, la idea es ahorrar mucho código y mantener una estructura más legible en el resto de nuestra aplicación.

Finalmente podrás usar esta nueva etiqueta en cualquier plantilla con:

@upper('Your text here')

Esto te devolverá el texto en el formato indicado, por supuesto este es tan solo un pequeño ejemplo pero como sabemos lo curioso que eres vas a comenzar a probar y a crear funcionalidades increíbles en Blade.

Espero que te haya gustado este post, recuerda dejar tus dudas en la sección de comentarios y como siempre, comparte este material en redes sociales.

Material recomendado

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Manejo de errores y excepciones en Laravel 5.1 Lección siguiente Laravel 5.1 Guía rápida para principiantes