Antes que te vayas
Inscríbete en nuestro curso gratuito de Laravel
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.
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.
helpers.php
dentro de la carpeta app/Http
, y cargar este archivo a través del composer.json
.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
]
},
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 Skill
s 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.
helpers.php
definiría una función llamada skills()
.<ul>
@foreach (skills() as $skill)
<li>
<a id="footer-link-license" href="{{ route('skill', ['slug' => $skill->slug]) }}">
{{ $skill->name }}
</a>
</li>
@endforeach
</ul>
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);
}
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.
Comparte este post si te fue de ayuda 🙂.
Cualquier duda y/o sugerencia es bienvenida.
Regístrate
Inicia sesión para acceder a nuestros cursos y llevar un control de tu progreso.
Cursos recomendados
Aprende Laravel desde cero y desarrolla aplicaciones web reales, en tiempo récord, de la mano de Laravel.
Ingresar al cursoActualiza tus proyectos desde cualquier versión hasta la última versión estable de Laravel.
Ingresar al cursoDesarrollemos un Messenger! Aprende sobre Channels, Queues, Vuex, JWT, Sesiones, BootstrapVue y mucho más.
Ingresar al cursoInscríbete en nuestro curso gratuito de Laravel