Está en la página 1de 3

Laravel tips

Crea directivas Blade en lugar de utilizar condicionales (no siempre)

En lugar de tener @if repetidos y esparcidos en tus plantillas Blade, te recomiendo crear tus
propias directivas, de esta forma podrás modificar tu código en un único lugar y afectará a
todo (centraliza tu código siempre que puedas).

Ya sabemos que el motor de plantillas de Laravel es Blade, y que éste nos ofrece mucha
funcionalidad de base, por ejemplo el condicional @auth para saber si el usuario está
identificado, @forelse para recorrer datos, @if para comprobar ciertas condiciones etcétera.

Imagina que quieres comprobar en Blade si un usuario es admin dependiendo de su rol, para
ello normalmente haríamos lo siguiente.

@if(auth()->user()->isAdmin())

@else

@endif

view rawrole.blade.php hosted with ❤ by GitHub

Obviamente ese código es más que correcto, pero Laravel 5 nos ofrece una alternativa mucho
mejor.

@if personalizados en Blade

Para crear nuestro primer if personalizado vamos a abrir el archivo AppServiceProvider.php y


añadimos el siguiente código al método boot.

<?php

Blade::if('admin', function() {

return auth()->user()->isAdmin();

});

view rawblade.php hosted with ❤ by GitHub

Con el trozo de código anterior hemos generado una nueva directiva en Blade llamada
@admin, y para utilizarla simplemente debemos hacer lo siguiente.

@admin
Eres admin

@else

No eres admin

@endif

view rawadmin.blade.php hosted with ❤ by GitHub

Directivas personalizadas con parámetros en Blade

Si además necesitas pasar parámetros a tus nuevas directivas, simplemente debemos escribir
tu directiva de la siguiente forma.

<?php

Blade::if('env', function ($environment) {

return app()->environment($environment);

});

env.php

Y para utilizarla simplemente añade el siguiente código dentro de un archivo blade.

@env('local')

Entorno Local

@else

Entorno es distinto a local

@endenv

env.blade.php

Así de sencillo es extender la funcionalidad de Blade con el desarrollo de if personalizados.


make:channel Create a new channel class

make:command Create a new Artisan command

make:controller Create a new controller class

make:event Create a new event class

make:exception Create a new custom exception class

make:factory Create a new model factory

make:job Create a new job class

make:listener Create a new event listener class

make:mail Create a new email class

make:middleware Create a new middleware class

make:migration Create a new migration file

make:model Create a new Eloquent model class

make:notification Create a new notification class

make:observer Create a new observer class

make:policy Create a new policy class

make:provider Create a new service provider class

make:request Create a new form request class

make:resource Create a new resource

make:rule Create a new validation rule

make:seeder Create a new seeder class

make:test Create a new test class

También podría gustarte