Link Search Menu Expand Document

5.14. Helpers de Laravel

Los helpers son componentes de Laravel que hemos estado usando casi desde el principio sin darnos cuenta porque, como su propio nombre indica, nos ayudan a resolver pequeñas tareas tediosas.

Ha llegado el momento de presentártelos formalmente, ¿no crees?

5.14.1. ¿Qué son los helpers?

Un helper es un componente del framework diseñado para facilitar alguna tarea típica en el desarrollo de una aplicación web.

Por ejemplo: el helper url() sirve para generar un ruta absoluta a partir de una relativa, de modo que la ruta absoluta siempre funcione, sea cual sea el servidor donde ejecutes la aplicación.

Aquí puedes ver un ejemplo de uso de este helper:

<a href='{{ url('/users/login') }}>Volver</a>

Cuando el helper url() actúe, traducirá la expresión anterior por este código HTML:

<a href='https://miservidor.com/users/login'>Volver</a>

Eso permite que la ruta sea correcta aunque muevas la aplicación de un servidor a otro, sin necesidad de modificar el código fuente.

El uso de los helpers es optativo: solo son ayudantes, y el programador/a debe decidir si le resultan útiles o no.

Los helpers cambian mucho de una versión a otra de Laravel, por lo que te recomiendo que eches un vistazo a la documentación oficial para saber qué helpers están disponibles en tu versión de Laravel.

Puedes encontrar una lista completa de helpers en: https://laravel.com/docs/X.x/helpers (sustituye X.x por tu versión de Laravel)

5.14.2. Algunos helpers útiles de Laravel

5.14.2.1. url helper

Ya lo hemos visto en el ejemplo anterior. Crea rutas absolutas a enlaces de tu alicación a partir de rutas relativas.

Las rutas absolutas siempre son más fiables, pero tienen el problema de que hay que cambiarlas si la aplicación cambia de servidor. Ese problema lo resuelve el helper url().

Se usa como en este ejemplo:

<a href='{{ url('/users/login') }}>Volver</a>

El código anterior generará este HTML:

<a href='https://miservidor.com/users/login'>Volver</a>

5.14.2.2. route helper

Es parecido a url(), pero sirve para rutas con nombre.

Por ejemplo, si en el enrutador tenemos una ruta con nombre como esta:

    Route::get("mi-ruta", "metodo@mi-controlador")->name("nombre-ruta");

…podemos referirnos a ella en cualquier vista como:

    <a href='{{ url('mi-ruta') }}>Texto</a>

…o como:

    <a href='{{ route('nombre-ruta') }}>Texto</a>

La segunda forma es mejor que la primera, porque nos permite cambiar en cualquier momento la dirección que ve el usuario sin modificar el código fuente del resto de la aplicación.

5.14.2.3. request helper

Este helper proporciona información sobre la petición (GET, POST o la que sea) con la que se cargó la página.

El helper request() devuelve un objeto con varios métodos para acceder a esa información. Estos son los más útiles:

  • request()->url() → Devuelve un string con la ruta actual (completa).
  • request()->path() → Devuelve un string con la ruta actual (solo desde la raíz de la aplicación, sin http ni el nombre del servidor).
  • request()->is(“ruta”) → Devuelve true si “ruta” coincide con la ruta actual. Admite wildcards (símbolos * y ?).
  • request()->input(“campo”) → Devuelve el valor de “campo” (enviado desde formulario).
  • request()->all() → Devuelve un array con todos los campos.
  • request()->has(“campo”) → Devuelve true si en la petición existe un campo con el nombre indicado.
  • request()->isMethod(“método”) → Devuelve true si la petición se hizo por el método indicado (POST, GET, PUT, etc).

El helper request() puede usarse en las vistas (como request()->url(), por ejemplo) o inyectarse en las funciones del controlador como un argumento, así:

public function mi_función(Request $r)

En este último caso, podemos acceder a todos los datos enviados mediante un formulario a través del objeto $r. Por ejemplo:

public function mi_función(Request $r) {
    $name = $r->name;
    $email = $r->email;
    $pass = $r->password;
    ...etc...
}

5.14.2.4. redirect helper

Muy útil cuando queremos redirigir al usuario hacia otra URL o acción (por ejemplo, para evitar que al pulsar F5 se reenvíen los datos de un formulario).

Admite varias formas:

return redirect('user/login');
return redirect()->action('LoginController@login'); 
return back();

5.14.2.5. auth helper

Como vimos en la sección de sesiones y autenticación, este helper permite saber si existe algún usuario autenticado en la aplicación.

auth()->user() nos devolverá el usuario autenticado (como un objeto de tipo User) o null si nadie ha hecho login.

Con el objeto User podemos acceder a todos los datos del usuario. Por ejemplo:

$user = auth()->user();
Bienvenido/a, {{ $user->name }}. 
Este es su email: {{ $user->email }}

5.14.2.6. errors helper

Se utiliza para conocer y mostrar los errores de validación de un formulario.

El objeto $errors está disponible en todas las vistas gracias a que un Middleware (ShareErrorsFromSession) la inyecta automáticamente.

Algunos métodos útiles de este objeto son:

  • $errors->all() → devuelve un array con todos los errores detectados.
  • $errors->any() → devuelve true si se ha detectado algún error.
  • $errors->first(“campo”) → devuelve el primer error de todos los que puedan afectar al campo indicado.