I\'m trying to do a view::share(\'current_user\', Auth::User());
but in laravel 5 i can\'t find where to do this, in L4 you could do this in the baseController,
I am using Laravel 5.0.28, view::share('current_user', Auth::User())
doesn't work anymore because this issue https://github.com/laravel/framework/issues/6130
What I do instead is, first create a new service provider using artisan.
php artisan make:provider ComposerServiceProvider
Then add ComposerServiceProvider to config/app.php
providers array
//...
'providers' => [
//...
'App\Providers\ComposerServiceProvider',
]
//...
Then open app/Providers/ComposerServiceProvider.php
that just created, inside boot method add the following
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
View::composer('*', function($view)
{
$view->with('current_user', Auth::user());
});
}
Finally, import View
and Auth
facade
use Auth, View;
For more information, see http://laravel.com/docs/5.0/views#view-composers
I'v tried it, put it in app/Providers simply not working. The alternative way is to create a Global middleware and put View::share('currentUser', Auth::user()); there.
In Laravel 5 uses the same method as in laravel 4:
View::share('current_user', Auth::User());
or using the view helper:
view()->share('current_user', Auth::User());
See in http://laravel.com/docs/5.0/views
This will may help:
App::booted(function()
{
View::share('current_user', Auth::user());
});
First, you can probably create your own BaseController and extend it in other controllers.
Second thing is, that you may use Auth:user()
directly in View, you don't need to assign anything in the view.
For other usages you can go to app/Providers/App/ServiceProvider.php
and in boot
method you can View::share('current_user', Auth::User());
but or course you need to add importing namespaces first:
use View;
use Auth;
because this file is in App\Providers
namespace