为什么用户和会话在Laravel中从AppServiceProvider中获取时不起作用?

时间:2015-03-29 23:41:38

标签: php laravel-5

我正在使用AppServiceProvider将数据传递给所有视图,就像我被告知的那样:

<?php namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use App\User;
use Session;

class AppServiceProvider extends ServiceProvider {

    public function boot()
    {
        $userID = Session::get('userID');
        $user = User::find($userID);
        view()->share('user', $user);
    }

    public function register()
    {
        $this->app->bind(
            'Illuminate\Contracts\Auth\Registrar',
            'App\Services\Registrar'
        );
    }
}

这会导致错误,但我的观看中$usernull。获取$user的相同代码在直接从常规Controller返回时效果很好。当手动注入$ user时,视图也可以正常工作。

下一步是在User模型中创建一个新方法:

public static function getSessionUser(){
    return self::find(Session::get('SteamID64'));
}

同样,除AppServiceProvider之外,其他地方都可以正常工作。

我愿意接受任何建议,甚至采用不同的方法将$user传递给我的观点。

我不明白是什么原因造成的,真的需要帮助。谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

我对Laravel不是很有经验,但我怀疑这个服务提供商没有被加载。您是否已将提供商添加到'providers' array in your config/app.php file