我想通过AppServiceProvider与所有视图共享数据。此外,我想先检查防护类型,以针对每种用户类型提供一些特定的输出。
我试图通过Auth :: guard('admin')-> check()检查AppServiceProvider中的防护,但返回false。但是,相同的if语句在我的控制器中也可以正常工作。 我还包含了Illuminate \ Support \ Facades \ Auth和Illuminate \ Support \ Facades \ View。
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\View;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
if (Auth::guard('admin')->check()) {
// Share data with views
}
}
}
即使我以管理员身份登录,if语句也会返回false。
答案 0 :(得分:0)
您需要为此使用View Composer。
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Auth;
use DB;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
view()->composer('*', function ($view)
{
if (Auth::guard('admin')->check()) {
}
});
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
如果要在视图中传递数据。
view()->composer('*', function ($view)
{
if (Auth::guard('admin')->check()) {
$admin = DB::table('admins')->first(); // for example
$view->with(compact('admin'));
}
});