我使用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'
);
}
}
这不会导致错误,但是在我的视图中
$user
是null
。当直接从常规控制器返回时,获得$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/