我使用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的代码也可以正常工作。当手动注入$user时,视图也可以正常工作。
下一步是在用户模型中创建新方法:
public static function getSessionUser(){
    return self::find(Session::get('SteamID64'));
}

同样,除了AppServiceProvider之外,这在任何地方都可以正常工作。
我对任何建议都持开放态度,即使是用不同的方法来表达我的观点。
我不明白这是什么原因,真的需要帮助。谢谢你的时间!

最佳答案

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

关于php - 为什么从Laravel的AppServiceProvider中访问用户和 session 时不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29336307/

10-08 20:46