Laravel 5,查看::分享

Kiw*_*iwi 8 php laravel laravel-5

我正在尝试做一个view::share('current_user', Auth::User());但是在laravel 5我找不到在哪里做这个,在L4你可以在baseController中做到这一点,但那个不再存在了.

格特格伦

xwl*_*lee 14

我正在使用Laravel 5.0.28,view::share('current_user', Auth::User())因为这个问题不再工作了https://github.com/laravel/framework/issues/6130

我所做的是,首先使用工匠创建一个新的服务提供商.

php artisan make:provider ComposerServiceProvider
Run Code Online (Sandbox Code Playgroud)

然后将ComposerServiceProvider添加到config/app.phpproviders数组

//...
'providers' => [
    //...
    'App\Providers\ComposerServiceProvider',
]
//...
Run Code Online (Sandbox Code Playgroud)

然后打开app/Providers/ComposerServiceProvider.php刚刚创建的内部引导方法添加以下内容

/**
 * Bootstrap the application services.
 *
 * @return void
 */
public function boot()
{
    View::composer('*', function($view)
    {
        $view->with('current_user', Auth::user());
    });
}
Run Code Online (Sandbox Code Playgroud)

最后,导入ViewAuth外观

use Auth, View;
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅http://laravel.com/docs/5.0/views#view-composers

  • 根据该问题,"在启动函数中,Auth :: user()尚未初始化,因此它将作为null共享给视图." 这实际上发生在我身上; Auth :: user为null.它对你有用吗? (2认同)

Mar*_*łek 11

首先,您可以创建自己的BaseController并将其扩展到其他控制器中.

第二件事是,您可以Auth:user()直接在View中使用,您不需要在视图中指定任何内容.

对于其他用途,你可以去app/Providers/App/ServiceProvider.phpboot方法,你可以View::share('current_user', Auth::User());,但还是当然,你需要添加第一导入命名空间:

use View;
use Auth;
Run Code Online (Sandbox Code Playgroud)

因为此文件位于App\Providers命名空间中


Dei*_*ide 5

在 Laravel 5 中使用与 Laravel 4 中相同的方法:

View::share('current_user', Auth::User());
Run Code Online (Sandbox Code Playgroud)

或使用视图助手:

view()->share('current_user', Auth::User());
Run Code Online (Sandbox Code Playgroud)

请参阅http://laravel.com/docs/5.0/views