Comparte en Facebook Twitter Google+

laravel-5-view-composers

Un View Composer es un método que se ejecuta cada vez que llamamos a una vista, puede ser muy útil a la hora de querer mostrar información común en varios métodos sin tener que repetir muchas líneas de código dentro de todos los controladores.

Veamos un pequeño ejemplo sobre su uso partiendo desde lo mas básico y usando el boilerplate que Laravel nos ofrece en cada instalación o creación de un nuevo proyecto.

Configurar base de datos

Usaremos la migracion Users que viene por defecto en cada instalacion de laravel, para ello agregamos primero las credenciales de acceso al archivo .env

Luego ejecutamos

Para mas informacion sobre el uso de migraciones te recomiendo el tutorial sobre Creando Migraciones en Laravel 5

Creando usuarios de prueba

Podemos hacer esto usando el método faker explicado en el tutorial Seeders y el componente Faker en Laravel 5, pero por ahora lo mantendremos simple ingresando a la url del proyecto y creándolos manualmente  urldetuproyecto/public/auth/register

laravel-5-register

Registrando un nuevo Service Provider

Lo primero que debemos hacer es crear un nuevo service provider en nuestra aplicacion

Luego lo agregamos al array de providers dentro de app/config.php

Llamando la clase desde ComposerServiceProvider

Lo ideal es crear una nueva clase que se encargue de todos los métodos y funciones que devuelven los valores que deseamos a la vista, por lo tanto en el service provider no vamos a crear ninguna función, solo haremos el llamado a la clase encargada de esto.

Las clases deben incluirse dentro del metodo boot() de la siguiente manera

Recuerda importar la clase

ProfileComposer será el nombre de la clase encargada de devolver los valores a la vista, y la creamos dentro del directorio App/Http/ViewComposers.

Esta clase se ejecutara únicamente para la vista wellcome (wellcome.blade.php).

Incluyendo varias vistas en el Service Provider

Si deseamos que la clase se ejecute para mas de una vista podemos pasar un arreglo de vistas editando la función boot

Agrupando View Composers

También se pueden llamar varios composers desde este service provider para una o mas vistas desde el método boot

de esta forma le indicamos que composer se debe ejecutar para cada vista.

Creando la clase ProfileComposer

En este caso solo pasaremos a la vista una variable llamada “count” con la cantidad de usuarios registrados en el sistema

Nota: si obtienes un error del tipo ClassNotFound prueba ejecutando en la consola

Mostrando el resultado en la vista

Hasta ahora todo va bien, pero solo le hemos indicado a la aplicacion que cada vez que se cargue la vista wellcome, se ejecute el ProfileComposer y devuelva una variable llamada “count”, ahora debemos imprimir dicha variable, para ello vamos a editar un poco el archivo wellcome.blade.php

Resultado final

Desde ahora cada vez que entremos al directorio public veremos algo como esto

wellcome-blade-view-compose

Podemos realizar métodos más complejos y enviar tantos datos, objetos o arreglos queramos enviar a cada vista sin sobrecargar todos los controladores de la aplicación.

Tutoriales recomendados

Información adicional en la documentación oficial de framework

Aprende PHP, Laravel y más por sólo 999 al mes: ver planes.

Lección anterior Aprende a usar Eloquent el ORM de Laravel Lección siguiente Uso de colecciones en Laravel