Laravel AppServiceProvider Auth :: guard ('admin') -> check () не работает - PullRequest
0 голосов
/ 14 мая 2019

Я хотел бы поделиться данными со всеми представлениями через AppServiceProvider.Кроме того, я хотел бы сначала проверить тип защиты, чтобы получить определенные выходные данные для каждого типа пользователя.

Я попытался проверить защиту в AppServiceProvider через Auth :: guard ('admin') -> check () но он возвращает ложь.Тем не менее, тот же оператор 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, хотя я вошел как администратор.

1 Ответ

0 голосов
/ 14 мая 2019

для этого вам нужен 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'));
            }   
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...