Blade y Laravel: ciclos, condicionales, token CSRF y componentes

Ya vimos cómo funcionan las vistas en Laravel y ahora sabemos que utilizan Blade.

Blade tiene muchas directivas que permiten hacer ciclos, mostrar cosas usando if o switch, generar el input para el token CSRF y muchas cosas más.

También nos permite definir componentes para más tarde usarlos en otras vistas superiores, e incluso incluir vistas en otras vistas.

Antes que nada, dejo el enlace a la documentación oficial.

El token CSRF

Hay dos maneras de obtener el token CSRF y Blade lo hace de manera muy sencilla. Si estamos dentro de un formulario, llamamos a @csrf y va a generar un input oculto:

Si en cambio queremos obtener el token “limpio”, por ejemplo, para inyectarlo en un encabezado HTTP, lo obtenemos llamando a la función csrf_token().

Nota: está de más decirlo, pero recuerda que el token cambiará en tu caso, pues es una cadena aleatoria.

Condicional if

Podemos llamar a @if, @elseif, @else y finalmente, para cerrarlo, a @endif. Dentro de cada expresión podemos evaluar algo que resulte en un booleano.

No es necesario poner todos los casos de elseif. Podría simplificarse a poner un @if y un @endif, o tener un @if, @else y @endif.

Dentro de las directivas podemos llamar a otras funciones. Por ejemplo, count, que devuelve la longitud de un arreglo.

Unless, isset y empty

Podríamos negar expresiones o llamar a isset y empty, pero Blade lo hace más fácil y creó unas directivas para hacer más fáciles las cosas.

Unless

Esto quiere decir “a no ser que”. Es decir, va a mostrar el código solo si no se cumple una condición.

La sintaxi es @unless(condicion) termina con @endunless.

isset

Lo mismo que haríamos con un @if:

@if(isset($valor))

Pero simplificado

@isset($valor)

Recuerda terminarlo con @endisset

Empty

Funciona de igual manera que isset, la sintaxis es @empty y @endempty.

Switch

Switch funciona igual que el switch de PHP. Se comienza con @switch($valor), se termina con @endswitch y para los casos se utiliza @case($unValor).

Recuerda que abajo de cada @case debe ir un @break. Y para el valor por defecto se usa @default.

Aquí un ejemplo que muestra el nombre del mes (faltan otros meses pero es un ejemplo):

Recorrer arreglo con foreach

Si pasamos un arreglo a los datos, podemos recorrerlos usando la directiva @foreach que se usa de la siguiente manera:

Dentro del ciclo, y antes de cerrarlo con @endforeach, podemos acceder a la variable que estamos recorriendo.

Ciclo for con Blade

También podemos definir un ciclo for que va desde un número a otro. Un ejemplo es el siguiente:

Con ello imprimimos la tabla de multiplicar del número 5:

Tabla de multiplicar del 5
Tabla de multiplicar del 5

 

Forelse

Con forelse nos evitamos llamar a count y poner un if para recorrer un arreglo. Aquí un ejemplo con los usuarios:

Dentro de @empty definimos el mensaje que se muestra si el arreglo está vacío. Usamos @forelse como si fuera un @foreach y terminamos con @endforelse.

Continue y break

Dentro de los ciclos foreach podemos evaluar una condición con un if y terminar la ejecución o saltar a la siguiente iteración.

Para continuar a la siguiente iteración llamamos a @continue dentro de un @foreach.

Si queremos terminar o romper el ciclo llamamos a @break dentro de un @foreach.

Como atajo, podemos llamar a @continue(condición) y @break(condición) para evitarnos un @if,

La variable loop

Cuando estemos en un foreach automáticamente se va a crear la variable $loop que es un objeto con determinadas propiedades. Vamos a analizarlas:

  • index: el índice, comienza en 0.
  • iteration: como el índice pero comienza en 1. Útil para mostrar el número pero en la forma no programadora.
  • remaining: el número de iteraciones que faltan para terminar el ciclo.
  • count: longitud del arreglo que está siendo recorrido.
  • first: va a estar en true cuando estemos en el primer elemento.
  • last: va a estar en true cuando estemos en el último elemento.
  • depth: la profundidad del ciclo en el que estamos. Esto es útil en ciclos anidados.
  • parent: si estamos en un ciclo anidado, $loop->parent se refiere al $loop del ciclo padre o del ciclo superior.

Recuerda que para acceder a una propiedad usas la flecha. Así: $loop->index.

Comentarios en Blade

Para marcar código de Blade como un comentario, usamos las llaves pero con dos guiones medios. Así:

{{-- soy un comentario --}}

Incluir subvistas

Justo como hacemos en PHP con include o require, podemos hacer lo mismo con Blade. Para incluir una subvista llamamos a @include("nombre") dentro de nuestra vista.

El nombre de la vista aplica igual: si las tenemos en directorios usamos el punto o barra para separar, y no es necesario indicar la extensión.

Por cierto, todas las variables de la vista actual serán visibles para la vista que incluimos.

Componentes y slots en Blade

Para terminar este post veamos lo que son los componentes y slots en Blade al trabajar con Laravel. La diferencia entre los componentes y las subvistas es que al incluir una vista no tenemos el control total sobre la misma.

En cambio con un componente definimos claramente que el mismo será modificado.

Por ejemplo, tenemos un div que mostrará una alerta. Puede ser así:

Aquí la variable más importante es $slot, pues es el contenido que pasamos. Para renderizar el componente llamamos a @component y terminamos con @endcomponent. Todo lo que se encuentre entre esa sección va a ser pasado al componente.

Veamos un ejemplo:

La ventaja de esto es que podemos pasar contenido HTML. Por cierto, si queremos definir más variables además del slot, hay que definirlas con @slot y @endslot. Así:

Dentro del componente simplemente hay que imprimir $pie en este caso con {{$pie}} y listo. Así podemos definir más slots.

Conclusión

Un poco largo de leer pero al final nos da un panorama general de lo que podemos lograr con Blade y Laravel. Recuerda que puedes ver la documentación oficial para aprender más o ver otros tutoriales de Laravel que he escrito.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

1 comentario en “Blade y Laravel: ciclos, condicionales, token CSRF y componentes”

  1. Pingback: Laravel: subir archivos y aplicar validación - Parzibyte's blog

Dejar un comentario