php - 为什么从 Laravel 中的 AppServiceProvider 访问时用户和 session 不起作用?

标签 php laravel-5

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

<?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。当从常规 Controller 直接返回时,获取 $user 的相同代码工作得很好。当手动注入(inject) $user 时, View 也能正常工作。

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

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

同样,这在除 AppServiceProvider 之外的任何地方都可以正常工作。

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

我不明白是什么原因造成的,确实需要帮助。感谢您的宝贵时间!

最佳答案

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

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

相关文章:

mysql - Laravel 5.2 中的批量插入优化

php - 从数据库中选择并使用特殊字符的最佳方法

php - Laravel 5 - 在身份验证不起作用之前

jquery - 我用 jquery 附加数据,但在 laravel 中没有对此数据执行任何事件

php - fatal error : Call to undefined function empty()

php - 如何在本地主机的 80 端口上运行 laravel 5?

mysql - 如何使用 Laravel 迁移交换两个索引字段?

php - 何时使用 print() 与关闭 php

php - 如何为每个目录设置 Php 的 auto_prepend_file 指令?

php - 第二次点击后从数据库下载数据