Este objetivo se puede lograr a través de diferentes métodos,
1. Usando BaseController
De la forma en que me gusta configurar las cosas, hago una BaseControllerclase que amplía la de Laravel Controllery establezco varias cosas globales allí. Todos los demás controladores se extienden desde BaseControllerel controlador de Laravel en lugar de hacerlo.
class BaseController extends Controller
{
public function __construct()
{
//its just a dummy data object.
$user = User::all();
// Sharing is caring
View::share('user', $user);
}
}
2. Usando filtro
Si sabe con certeza que desea configurar algo para las vistas en cada solicitud en toda la aplicación, también puede hacerlo a través de un filtro que se ejecuta antes de la solicitud; así es como trato con el objeto Usuario en Laravel.
App::before(function($request)
{
// Set up global user object for views
View::share('user', User::all());
});
O
Puedes definir tu propio filtro
Route::filter('user-filter', function() {
View::share('user', User::all());
});
y llamarlo a través de una simple llamada de filtro.
Actualización según la versión 5. *
3. Usando Middleware
Usando el View::shareconmiddleware
Route::group(['middleware' => 'SomeMiddleware'], function(){
// routes
});
class SomeMiddleware {
public function handle($request)
{
\View::share('user', auth()->user());
}
}
4. Usando View Composer
View Composer también ayuda a enlazar datos específicos para ver de diferentes maneras. Puede vincular directamente la variable a una vista específica o a todas las vistas. Por ejemplo, puede crear su propio directorio para almacenar su archivo de composición de vista de acuerdo con los requisitos. y estos archivos de composición de vista a través del Servicio proporcionan interactuar con la vista.
El método Ver compositor puede usarse de manera diferente. El primer ejemplo puede parecerse:
Podrías crear un App\Http\ViewComposersdirectorio.
Proveedor de servicio
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ViewComposerServiceProvider extends ServiceProvider {
public function boot() {
view()->composer("ViewName","App\Http\ViewComposers\TestViewComposer");
}
}
Después de eso, agregue este proveedor a config / app.php en la sección "proveedores".
TestViewComposer
namespace App\Http\ViewComposers;
use Illuminate\Contracts\View\View;
class TestViewComposer {
public function compose(View $view) {
$view->with('ViewComposerTestVariable', "Calling with View Composer Provider");
}
}
ViewName.blade.php
Here you are... {{$ViewComposerTestVariable}}
Este método podría ayudar solo para una vista específica. Pero si desea activar ViewComposer para todas las vistas, tenemos que aplicar este cambio único a ServiceProvider.
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ViewComposerServiceProvider extends ServiceProvider {
public function boot() {
view()->composer('*',"App\Http\ViewComposers\TestViewComposer");
}
}
Referencia
Documentación Laravel
Para mayor aclaración Episodio de Laracast
Si todavía hay algo poco claro de mi parte, avíseme.