Crear Helpers personalizados en Laravel 6

Los «helpers» son métodos o funciones de ayuda que nos facilitan acciones de modificación o tratamiento de datos.

Laravel ya tiene unos helpers definidos que pueden ayudarte. Pero, ¿Y si necesitas definir tus propias funciones de ayuda?

¿Qué tipo de funciones querrías definir en este archivo?

Por ejemplo, podríamos necesitar una función que reciba por parámetro una fecha con formato año/mes/día (Y/m/d) y darle el formato de día/mes/año (d/m/Y).

Para ello vamos a crear nuestro archivo y lo publicaremos en app/helpers.php

Dentro añadiremos la función de ayuda:

<?php
/**
 * Función que nos devuelve la fecha formateada en Español 
 *
 * @param [type] $date
 * @return void
 */
function formatDateToEsp($date){

    return date("d/m/Y", strtotime($date));

}

Para cargar los helpers en nuestra aplicación, vamos a abrir el archivo composer.json, buscamos la clave autoload y ahí añadiremos una nueva clave «files» que contendrá dentro la ruta de nuestro archivo helpers.php:

"autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "files": [
            "App/helpers.php"
        ],
        "classmap": [
            "database/seeds",
            "database/factories"
        ]
    },

Una vez aplicado, abriremos nuestra consola en la carpeta raíz y escribiremos composer dump-autoload.

$ composer dump-autoload
Generating optimized autoload files

Una vez terminado podremos revisar en nuestro composer.lock las líneas añadidas:

"autoload": {
                "files": [
                    "src/Illuminate/Foundation/helpers.php",
                    "src/Illuminate/Support/helpers.php"
                ],
                "psr-4": {
                    "Illuminate\\": "src/Illuminate/"
                }
            },

Ahora podremos aplicar esta función, por ejemplo, a un listado de datos:

<table class="table align-items-center table-flush">
	<thead class="thead-light">
		<tr>
			<th scope="col">ID</th>
			<th scope="col">FECHA</th>
		</tr>
	</thead>
	<tbody>
		@foreach ($datos as $dato)
			<tr>
				<td>{{ $dato->id }}</td>
				<td>{{ formatDateToEsp($dato->fecha) }}</td>
			</tr>
		@endforeach
	</tbody>
</table>

FECHA SIN FORMATEAR

FECHA FORMATEADA CON FUNCIÓN HELPER