Chr*_*ris 6 php laravel laravel-5
我需要将当前登录的用户共享给所有视图.我试图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());
}
//..
}
Run Code Online (Sandbox Code Playgroud)
但是,当我查看视图(登录后)时,该user变量为null.奇怪的是,$guard->user(受保护的属性,而不是公共方法user())不是.我得到的输出如下:

请注意,填充了guard-> user变量,但用户变量为null.
小智 9
最好使用View Composers进行此操作.
在您的ComposerServiceProvider中boot():
view()->composer('*', 'App\Http\ViewComposers\GlobalComposer');
Run Code Online (Sandbox Code Playgroud)
在HTTP/ViewComposers中创建一个类GlobalComposer,并创建函数:
public function compose( View $view )
{
$view->with('authUser', Auth::user());
}
Run Code Online (Sandbox Code Playgroud)
http://laravel.com/docs/5.0/views#view-composers
您可以在不创建文件的情况下解决此问题.
将这些代码添加到ServiceProvider的boot()操作中就是这样.
view()->composer('*', function($view){
$view->with('user', Auth::user());
});
Run Code Online (Sandbox Code Playgroud)
来源也相同:http://laravel.com/docs/5.0/views#view-composers
看看Wildcard View Composers.
| 归档时间: |
|
| 查看次数: |
4910 次 |
| 最近记录: |