【问题标题】:Laravel 5.7 - Access Auth::User() inside a service providerLaravel 5.7 - 在服务提供者中访问 Auth::User()
【发布时间】:2019-04-10 00:45:32
【问题描述】:

我需要在一个模块的服务提供者中访问当前用户。 Auth::user() 返回空值。我知道中间件是在服务提供者之后调用的,这就是为什么它为空。这个问题有什么解决办法吗?这是我的代码

namespace Modules\User\Providers;

use Illuminate\Support\Facades\Auth;
use Illuminate\Support\ServiceProvider;
use Nwidart\Modules\Facades\Module;

class ViewComposerProvider extends ServiceProvider
{
    /**
     * Indicates if loading of the provider is deferred.
     *
     * @var bool
     */

    protected $defer = false;

    /**
     * Register the service provider.
     *
     * @return void
     */

    public function boot()
    {
        $this->buildMenu();
        $this->buildAvatar();
    }

    public function register()
    {
        dd(Auth::user());//null
    }

    private function buildAvatar(){
        $f = Auth::user();
        dd($f); // null
    }

    public function buildMenu()
    {
        view()->composer('layouts.subnavbar', function ($view) {
            $t = \Nwidart\Modules\Facades\Module::getByStatus(1);
            $modules = [];
            foreach ($t as $item)
                $modules[] = $item->name;
            $view->with('modules', $modules);
        });
    }

    /**
     * Get the services provided by the provider.
     *
     * @return array
     */
    public function provides()
    {
        return [];
    }
}

【问题讨论】:

标签: laravel laravel-5


【解决方案1】:

您可以创建 2 个视图作曲家,1 个用于菜单,1 个用于头像

,而不是在提供程序中调用用户

AvatarComposer.php

class AvatarComposer
{

    public function compose(View $view)
    {
        $avatar = Auth::user()->avatar//AVATAR HERE
        $view->with('avatar', $avatar);
    }
}

ModuleComposer.php

class ModuleComposer
{
    public function compose(View $view)
    {
        $t = \Nwidart\Modules\Facades\Module::getByStatus(1);
        $modules = [];
        foreach ($t as $item)
            $modules[] = $item->name;
        $view->with('modules', $modules);
    }
}

然后在您的提供商的boot 中:

//make it public for all routes
View::composer('*', AvatarComposer::class);

View::composer('layouts.subnavbar', ModuleComposer::class);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-10-31
  • 2015-03-25
  • 1970-01-01
  • 2019-08-24
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
  • 2015-10-24
相关资源
最近更新 更多