Cómo definir nuestros propios helpers en Laravel (2 pasos)

Introducción

Los helpers nos ayudan a realizar ciertas operaciones, en función a las tareas que encontramos comúnmente.

Se pueden representar a través de clases, o como funciones utilitarias, y están disponibles para su uso en todo nuestro proyecto.

En este artículo vamos a ver cómo definir helpers a través de funciones.

Con sólo llamar a estas funciones tendremos acceso a los datos o a la funcionalidad que necesitamos, de una forma bien puntual e inmediata.

Laravel: Define helpers en 2 pasos

Existen muchas formas de definir los helpers.

En este caso vamos a usar el método más instantáneo para salir de apuros cuando necesitamos tener disponible una función sin tantos rodeos.

  • Paso 1: Crear un archivo helpers.php dentro de la carpeta app/Http, y cargar este archivo a través del composer.json.
  • Paso 2: Luego de modificar el archivo composer.json, ejecutar el comando composer dump-autoload.

Si tienes dudas sobre cómo cargar el archivo helpers.php (me refiero al paso 1), puedes guiarte de este ejemplo:

"autoload": {
    "classmap": [
        ...
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/Http/helpers.php" // <---- CARGAMOS EL ARCHIVO INDICADO
    ]
},

Ejemplo 1

En mi caso, tengo un footer que está disponible en la gran mayoría de páginas de mi aplicación. En este footer quiero mostrar un listado de todos los Skills existentes en la base de datos.

A fin de no escribir la consulta en todos los controladores, una alternativa es crear un helper, para tener al alcance esta información siempre que se requiera.

  • Considerando ello, el archivo helpers.php definiría una función llamada skills().
  • Y luego de ello, ya es posible usar la función en cualquiera de las vistas.
<ul>
  @foreach (skills() as $skill)
    <li>
      <a id="footer-link-license" href="{{ route('skill', ['slug' => $skill->slug]) }}">
        {{ $skill->name }}
      </a>
    </li>
  @endforeach
</ul>

Ejemplo 2

Ahora estoy desarrollando una aplicación que permite enviar mensajes de texto (SMS) a través de una API.

La lógica para el envío de mensajes de texto es la misma en todos los casos (se necesita el teléfono y el mensaje a enviar).

Sin embargo, necesito usar esta lógica en muchos lugares de mi aplicación. En algunos controladores, en algunos eventos, y en algunas tareas programadas.

Como la llamada a la API no es muy compleja, he decidido crear una función sendSMS(phone, message) en el archivo de helpers.

Ahora tengo disponible esta funcionalidad, ¡y la puedo usar desde todos lados!

function sendSms($phone, $message) {
    $phone  =  str_replace(' ', '', $phone); // clear spaces in phone number

    $fields = [
        "apikey" => env('SMS_API_KEY'),
        "mensaje" => $message,
        "numcelular" => $phone,
        "numregion" => "52"
    ];
    $options = [
        CURLOPT_URL => "http://smsmasivos.com.mx/sms/api.envio.new.php",
        CURLOPT_POST => TRUE,
        CURLOPT_RETURNTRANSFER => TRUE,
        CURLOPT_POSTFIELDS => $fields
    ];
    curl_setopt_array($ch = curl_init(), $options);

    $response = curl_exec($ch);
    curl_close($ch);

    return json_decode($response);
}

Conclusión

Si necesitamos usar una funcionalidad bien puntual a lo largo de nuestro proyecto, podemos definir nuestros propios helpers.

Esto útil porque no requiere de mucho esfuerzo y nos saca de apuros mientras desarrollamos aplicaciones pequeñas.

Sin embargo, si la funcionalidad que queremos tener disponible es mucho más compleja, lo recomendable es definir clases que representen servicios.

Éstas clases podrían incluir validaciones, y tratar distintos escenarios.

# helpers # laravel

Logo de Programación y más

Comparte este post si te fue de ayuda 🙂.

Regístrate

Accede a todos los cursos, y resuelve todas tus dudas.

Cursos Recomendados

Imagen para el curso Aprende Laravel

Aprende Laravel

Aprende Laravel desde cero y desarrolla aplicaciones web reales, en tiempo récord, de la mano de Laravel.

Iniciar curso
Imagen para el curso Laravel Upgrade

Laravel Upgrade

Actualiza tus proyectos desde cualquier versión hasta la última versión estable de Laravel.

Iniciar curso
Imagen para el curso Laravel y Vue

Laravel y Vue

Desarrollemos un Messenger! Aprende sobre Channels, Queues, Vuex, JWT, Sesiones, BootstrapVue y mucho más.

Iniciar curso

Espera un momento ...

¿Te gustaría llevar mi curso de Laravel, gratis?

Sólo debes ingresar tus datos: