我正在尝试做一个view::share('current_user', Auth::User());
,但是在 laravel 5 中我找不到在哪里做这个,在 L4 中你可以在 baseController 中做这个,但是那个不再存在了。
格伦
我正在使用 Laravel 5.0.28,因为这个问题https://github.com/laravel/framework/issues/6130view::share('current_user', Auth::User())
不再起作用
我所做的是,首先使用 artisan 创建一个新的服务提供者。
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;
首先,您可能可以创建自己的 BaseController 并在其他控制器中扩展它。
第二件事是,你可以Auth:user()
直接在视图中使用,你不需要在视图中分配任何东西。
对于其他用法,您可以使用app/Providers/App/ServiceProvider.php
方法boot
,View::share('current_user', Auth::User());
但当然您需要先添加导入命名空间:
use View;
use Auth;
因为这个文件在App\Providers
命名空间中
这可能会有所帮助:
App::booted(function()
{
View::share('current_user', Auth::user());
});
在 Laravel 5 中使用与 laravel 4 中相同的方法:
View::share('current_user', Auth::User());
或使用视图助手:
view()->share('current_user', Auth::User());
我试过了,把它放在 app/Providers 中根本不起作用。另一种方法是创建一个全局中间件并将 View::share('currentUser', Auth::user()); 那里。