El motor de plantillas Blade nos brinda la directiva @include(), que solo acepta la ruta de una vista. Pero, ¿que pasa si tenes una condición para agregar una vista o no? ¿O si la vista no existe? ¿O si queremos asignar la vista a una variable?. Bien, en este artículo vamos a ver 3 funciones muy útiles que nos facilitaran las cosas.
Usa @includeIf si la vista no llegara a existir
Gracias a la directiva @includeIf() podemos reemplazar bastante código en una solo linea mejorando mucho la apariencia de nuestro código y, nosotros como desarrolladores, escribimos menos. 😁
Usa @includeWhen para incluir una vista según una condición
Con la directiva @includeWhen() que, a diferencia de @includeIf(), su primer argumento debe ser un booleano para que Blade detecte si debe incluir la vista que le pasamos como segundo parámetro o no.
Usa @includeFirst si tenes un vista por defecto
La directiva @includeFirst() es muy útil cuando tenes un sitio web con múltiples temas. Supongamos que queremos cargar un banner para un tema en particular, pero puede que dicho banner no exista para ese tema y tengamos que cargar uno por defecto.
Con @includeFirst(), si no llegará a existir la primer vista («adminlte.header», en el ejemplo), entonces va a incluir la vista que le pasamos como segundo parámetro.
BONUS 🎁
Hay una directiva mas que sirve para incluir vistas y es la directiva @each que incluye una vista por cada elemento de una colección o array. Pueden ver mas detalles y ejemplos en este artículo o haciendo click en la siguiente imagen.
Versión disponible
Las directivas @includeIf() y @includeWhen() están disponibles desde Laravel 5.4. Y la directiva @includeFirst() fue agregada en Laravel 5.5.
Conclusión
Vimos 3 directivas de Blade muy útiles a la hora de agregar vistas según ciertas condiciones. Y nos ayudan a escribir menos código quedando el trabajo final mucho mas limpio. Espero que les haya gustado y nos vemos en el próximo Laravel Tip.
No entendí la parte de «La directiva @includeFirst() es muy útil cuando tenes un sitio web con múltiples temas.» ¿Si el sitio tiene múltiples temas igual el archivo blade debería existir no? Y si dicho archivo existe entonces igual lo incluira…
Hola Eduar, como estas? debería existir un archivo default de blade por si el archivo del theme no existiese.
Hola, por si acaso cuentas con un listado de las directivas de blade y que hace cada una?
Hola Mario, como estas?
No amigo, en la documentación podes encontrar todas.