markdown Un View Composer esunmétodocouejejea cada vez que llamamos a una vista

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown Un View Composer esunmétodocouejejea cada vez que llamamos a una vista相关的知识,希望对你有一定的参考价值。

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.

Registrando un nuevo Service Provider

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


$ php artisan make:provider ComposerServiceProvider

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

```
'App\Providers\ComposerServiceProvider',
```

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

```
public function boot()
{
     View::composer('welcome', 'App\Http\ViewComposers\ProfileComposer');
}
```

#Recuerda importar la clase

use Illuminate\Support\Facades\View;

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

```
View::composer([‘welcome’,’home’,’login’], 'App\Http\ViewComposers\ProfileComposer');
```

#Agrupando View Composers

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

```
View::composers(['App\Http\ViewComposers\AdminComposer' => ['admin.index', 'admin.profile'],
    'App\Http\ViewComposers\UserComposer' => 'user',
    'App\Http\ViewComposers\ProductComposer' => 'product',
    'App\Http\ViewComposers\ProfileComposer' => 'welcome'
]);
```

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

```
<?php namespace App\Http\ViewComposers;

use Illuminate\Contracts\View\View;
use App\User as User;

class ProfileComposer {
    /**
     * Bind data to the view.
     *
     * @param  View  $view
     * @return void
     */
    public function compose(View $view)
    {
        $users = User::all();
        $view->with('count', $users->count());
    }

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

```
$ composer dump-autoload
```

#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
```
<div class="container">
 <div class="content">
 <div class="title">We are {{ $count }} users now</div>
 
 </div>
 </div>
    </body>
    
    ```

以上是关于markdown Un View Composer esunmétodocouejejea cada vez que llamamos a una vista的主要内容,如果未能解决你的问题,请参考以下文章

markdown Estructura de un servicio

markdown ESTADOS DE UN THREAD

markdown Todo en un solo commit

markdown Estructura de un documento WSDL

markdown Elementos de un mensaje SOAP

markdown Router Resolver avec un store