我需要将当前登录的用户共享给所有视图。我试图在view->share()
文件中使用AppServiceProvider.php
方法。
我有以下内容:
<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Contracts\Auth\Guard;
class AppServiceProvider extends ServiceProvider {
public function boot(Guard $guard)
{
view()->share('guard', $guard);
view()->share('user', $guard->user());
}
//..
}
但是,当我查看视图(登录后)时,user
变量为空。奇怪的是,$guard->user
(受保护的属性,而不是公共方法用户())不是。我得到的输出如下:
请注意,填充了guard-&gt;用户变量,但用户变量为null。
答案 0 :(得分:9)
最好将View Composers用于此。
在boot()
中的ComposerServiceProvider中:
view()->composer('*', 'App\Http\ViewComposers\GlobalComposer');
在HTTP / ViewComposers中创建一个类GlobalComposer,并创建函数:
public function compose( View $view )
{
$view->with('authUser', Auth::user());
}
答案 1 :(得分:6)
您可以在不创建文件的情况下解决此问题。
将这些代码添加到ServiceProvider的boot()操作中,就是这样。
view()->composer('*', function($view){
$view->with('user', Auth::user());
});
来源也相同:http://laravel.com/docs/5.0/views#view-composers
查看通配符视图编辑器。