我正在使用 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'
);
}
}
这不会导致错误,但是在我看来 $user
是 null
。当从常规 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/