8

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

格伦

4

5 回答 5

14

我正在使用 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.phpproviders 数组

//...
'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

于 2015-04-23T08:35:47.580 回答
11

首先,您可能可以创建自己的 BaseController 并在其他控制器中扩展它。

第二件事是,你可以Auth:user()直接在视图中使用,你不需要在视图中分配任何东西。

对于其他用法,您可以使用app/Providers/App/ServiceProvider.php方法bootView::share('current_user', Auth::User());但当然您需要先添加导入命名空间:

use View;
use Auth;

因为这个文件在App\Providers命名空间中

于 2014-10-09T11:03:51.047 回答
4

这可能会有所帮助:

App::booted(function()
{
    View::share('current_user', Auth::user());
});
于 2014-10-09T10:23:21.033 回答
4

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

View::share('current_user', Auth::User());

或使用视图助手:

view()->share('current_user', Auth::User());

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

于 2015-06-25T03:05:06.447 回答
2

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

于 2015-02-14T00:15:07.830 回答