我正在尝试view::share('current_user', Auth::User());
但是在laravel 5中我无法找到这样做,在L4中你可以在baseController中执行此操作,但那个不再存在。
grt Glenn
答案 0 :(得分:11)
首先,您可以创建自己的BaseController并将其扩展到其他控制器中。
第二件事是,您可以直接在View中使用Auth:user()
,而不需要在视图中指定任何内容。
对于其他用法,您可以转到app/Providers/App/ServiceProvider.php
并使用boot
方法View::share('current_user', Auth::User());
,但当然您需要先添加导入命名空间:
use View;
use Auth;
因为此文件位于App\Providers
命名空间
答案 1 :(得分:11)
我正在使用Laravel 5.0.28,view::share('current_user', Auth::User())
不再有效,因为此问题https://github.com/laravel/framework/issues/6130
我所做的是,首先使用工匠创建一个新的服务提供商。
php artisan make:provider ComposerServiceProvider
然后将ComposerServiceProvider添加到config/app.php
providers数组
//...
'providers' => [
//...
'App\Providers\ComposerServiceProvider',
]
//...
然后打开刚刚创建的app/Providers/ComposerServiceProvider.php
,在boot方法中添加以下内容
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
View::composer('*', function($view)
{
$view->with('current_user', Auth::user());
});
}
最后,导入View
和Auth
门面
use Auth, View;
答案 2 :(得分:4)
这可能会有所帮助:
App::booted(function()
{
View::share('current_user', Auth::user());
});
答案 3 :(得分:2)
在Laravel 5中使用与laravel 4相同的方法:
View::share('current_user', Auth::User());
或使用视图助手:
view()->share('current_user', Auth::User());
答案 4 :(得分:1)
我试过了,把它放在app / Providers中根本不工作。另一种方法是创建一个Global中间件并放置View :: share(' currentUser',Auth :: user());那里。