Blog

Como crear nuestros propios helpers en Laravel en 4 pasos

Laravel viene por defecto con un buen número de helpers que nos facilitan mucho la vida a la hora de programar con este Framework de PHP y que podemos usar en cualquier parte de nuestra aplicación. Tenemos helpers para trabajar con arrays, urls, strings,... pero en muchas ocasiones nos encontramos con la necesidad de tener un helper para hacer algo que no viene por defecto en los helpers de Laravel.

Vamos a ver como crear nuestros propios helpers y verás lo sencillo que es y lo vamos a hacer con un ejemplo. Supongamos que tenemos en la base de datos diferentes tablas donde guardamos el orden con el que queremos que se ordene en la Web, por ejemplo en una tabla donde guardamos categorías y otro donde guardamos nuestro portfolio. En ambas tablas tendremos un campo ‘orden’ donde guardaremos este valor. Al dar de alta un nuevo registro en una de estas tablas necesitaremos saber cual es el orden del registro anterior para asignarle al nuevo ese valor más uno.

PASO 1

Dentro de la carpeta app crearemos una carpeta que llamaremos helpers donde guardaremos todos nuestros helpers. Nos creamos un archivo php que se llame por ejemplo Helpers.php

 

PASO 2

Una vez hecho esto nos vamos a nuestro archivo composer.json y en el autoload añadimos la llamada al helper que acabamos de crear. Esto quedaría así:

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

 

PASO 3

Vamos al terminal y ejecutar el siguiente comando:

composer dump-autoload

 

PASO 4

Ahora ya podemos empezar a crear nuestros helpers. Para ello simplemente nos tenemos que crear las funciones que necesitamos. En mi caso me he creado un helper que llamo maxOrdering que lo que hace es devolverme el número de orden que le tengo que asignar a un registro nuevo en la tabla que le pasemos en el helper. El código quedaría así:

<?php

function maxOrdering($table, $field=null, $value=null)
{
    $order=DB::table($table)
                ->when($field, function ($query) use ($field, $value) {
                    if($field!=null) {
                        return $query->where($field, $value);
                    }
                })
                ->max('ordering');
    $ordering = (is_null($order)) ? 1 : $order + 1;
    return $ordering;
}

Como puedes ver es muy sencillo crear nuestros propios helpers, con estos pasos ya puedes desarrollar tus propios helpers en tu aplicación.