Laravel 5,查看::分享

时间:2014-10-09 10:14:20

标签: php laravel laravel-5

我正在尝试view::share('current_user', Auth::User());但是在laravel 5中我无法找到这样做,在L4中你可以在baseController中执行此操作,但那个不再存在。

grt Glenn

5 个答案:

答案 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());
    });
}

最后,导入ViewAuth门面

use Auth, View;

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

答案 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());

http://laravel.com/docs/5.0/views

答案 4 :(得分:1)

我试过了,把它放在app / Providers中根本不工作。另一种方法是创建一个Global中间件并放置View :: share(' currentUser',Auth :: user());那里。