Comparte en Facebook Twitter Google+

injection-blade-laravel-5-1

Al desarrollar aplicaciones para la web, nos encontramos en ocasiones con la necesidad de incluir ciertos parámetros o variables comunes en diferentes vistas del proyecto, como pueden ser menús dinámicos, meta-tags, estadísticas, y otros. Muchas veces cometemos el error de enviar estos valores a cada vista desde cada controlador que usemos, lo que ocasiona indudablemente una redundancia de código.

En Laravel tenemos varias opciones que pueden ayudar a escribir mejor las aplicaciones manteniendo separadas las responsabilidades de las vistas y los controladores, por ejemplo si queremos imprimir el nombre de un usuario logueado, no debemos enviarlo como una variable desde un controlador, solo accedemos a esa información desde blade con algo como

Pero en situaciones más complicadas, podemos hacer uso de los view composers, que eran una forma para indicarle al sistema que datos debía cargar al momento de llamar a una o varias vistas determinadas, manteniendo así un código limpio en los controladores y sin necesidad de recargar las vistas de código PHP.

En Laravel 5.1 se ha incluido un nuevo método que permite inyectar servicios (Clases) en cualquiera de las vistas de nuestra aplicación,  con lo cual nos podemos ahorrar el uso de los views composers cuando no sea requerido.

Veamos un ejemplo

Vamos a crear una nueva clase que devuelva un array de enlaces para construir un menú.

y dentro un método  llamado links

Esta clase puede hacer una consulta a una tabla en base de datos y devolver una colección de Eloquent, en este caso mantendremos el ejemplo simple con el uso de este array.

si usamos el template welcome que trae por defecto la instalacion de Laravel 5.1 podemos hacer algo como lo siguiente

//inyectamos la clase

Al final obtendremos una respuesta como esta

inject-blade-home

Este sencillo ejemplo te da una idea de como funciona el nuevo método para inyección de servicios de blade.

Te invito a mantenerte al día con nuestras publicaciones diarias, espero que te haya gustado este post y no olvides dejar tus dudas y comentarios.

Lecturas recomendadas

Regístrate hoy en Styde y continua mejorando tus habilidades: ver planes.

Lección anterior Integrar Bootstrap 3 en Laravel 5.1 Lección siguiente Sistema de autenticación en Laravel 5.1