从app()获取服务并不总是在辅助函数中工作

时间:2016-03-07 22:16:46

标签: php laravel laravel-5

我正在创建一个辅助函数,目前它看起来像这样:

function avatar($userid = null){
    return app()->User->getAvatar($userid);
}

我遇到的问题是,我收到的错误是:

  

类用户不存在(查看:/resources/views/layouts/usernav.blade.php)

当我在某些页面上运行此操作但在其他页面上运行时,会发生这种情况。我不知道造成这个问题的原因。

刀片使用:

<img src="{{avatar()}}" id="avatar" style="height: 50px;" class="img-responsive">

我们还有一个服务提供商,如下所示:

class UserServiceProvider extends ServiceProvider {

    protected $defer = true;

    public function boot(User $user) {

    }

    public function register() {
        $this->app->resolving(User::class, function(User $user, $app){
            $user->setUser(Auth::user() ? Auth::user() : null);
            $this->app->instance('User', $user);
        });
    }

    public function provides(){
        return [User::class];
    }

}

1 个答案:

答案 0 :(得分:0)

要解决此问题,我需要修改我的服务提供商的注册功能:

$this->app->singleton('User', function ($app) {
    $user = new User();
    $user->setUser(Auth::user() ? Auth::user() : null);
    return $user;
});