jump to navigation

Como agregar una clase de ayuda a un proyecto en Laravel 13.3.14

Posted by Migsar in Computación, Laravel.
Tags: , , ,
add a comment

Este post se basa en dos posts en inglés:

Laravel se basa en una filosofía MVC (Model-View-Controller) y en la esencia de esta filosofía está el no mezclar la presentación con el modelo, es decir, los datos. Creo que hay muchas buenas razones para que esta sea una buena filosofía de programación, pero eso escapa al tema de este post, lo importante aquí es que muchas veces utilizaremos funciones que no pertenecen a una clase en particular, pero sería un error dejarlas perdidas en algún lugar de la vista, en primer lugar, porque después de un tiempo de no ver el código se nos olvidará dónde están y alguien que no lo haya visto no tiene porque saberlo; en segundo lugar porque muchas veces ese código es utilizado en más de una ocasión y no hay necesidad de repetirlo y en tercer y último lugar porque las vistas no tienen que tener lógica (aunque Laravel permite una clase de lógica simple dentro de Blade).

Todo esto surgió porque quería hacer un menú para un sitio y primero lo hice con recursividad dentro de Blade, la verdad es que funciona bastante bien, pero definitivamente puede ser confuso para cualquier programador que modifique el código aún con los comentarios que tiene, por otro lado, debido al sistema de templates de Laravel, Blade,  tampoco es necesario llamar a la función muchas veces, pues se utiliza dentro del template general que es reincorporado en cada vista.

Lo primero que hay que hacer es agregar la ruta en “app/start/global.php”, se trata de un directorio que tendrá estas clases, se puede llamar de cualquier modo aunque a mí me parece razonable la sugerencia de nombres descriptivos por lo que se llamará libraries:


ClassLoader::addDirectories(array(
  app_path().'/commands',
  app_path().'/controllers',
  app_path().'/models',
  app_path().'/database/seeds',
  // Aquí va nuestra biblioteca
  app_path().'/libraries'
));

Después es necesario crear este directorio, en linux desde la raíz del proyecto:
mkdir app/libraries

El último paso es hacer que Laravel lo cargue automáticamente, para esto será necesario agregarlo al archivo de composer, “composer.json”, es el último que aparece en el classmap de autoload, hay que tener cuidado con las comas:


"autoload": {
  "classmap": [
   "app/commands",
   "app/controllers",
   "app/models",
   "app/database/migrations",
   "app/database/seeds",
   "app/tests/TestCase.php",
   "app/libraries" // Aquí va nuestra biblioteca
  ]
},

Y para que lo incorpore al proyecto es necesario correr:
composer dump-autoload.

Anuncios