Define tus propios helpers en Laravel (en 2 simples 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.

2 pasos para definir helpers en Laravel

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

¿Tienes alguna duda?

Si algo no te quedó claro o tienes alguna sugerencia, escribe un comentario aquí debajo.

Además recuerda compartir el post si te resultó de ayuda. ¡Gracias!

comments powered by Disqus