Laravel: определение шлюза с использованием отложенного поставщика услуг - PullRequest
0 голосов
/ 30 марта 2020

Я знаю, что это старый пост. Но у меня возникла проблема с использованием этого отложенного поставщика услуг для определения шлюзов.

Я использую Laravel 5.8

Поставщик услуг : Я хочу отложить загрузку после определения "foo" (в промежуточном программном обеспечении).

class MyServiceProvider extends ServiceProvider implements DeferrableProvider
{

 protected $defer = true;

 public function register()
 {
      $this->app->bind('MyImplementation', function () {
          $request = app(\Illuminate\Http\Request::class);
          return app(MyImplementation::class, [$request->foo]);
      }
 }    

 public function provides()
 {
    return [MyImplementation::class];
 }
}

Вот как я обращаюсь в промежуточном программном обеспечении (добавление «foo» и использование поставщика услуг). «foo» будет использоваться для определения Гейтса.

public function handle($request, Closure $next)
{
    $request->attributes->add(['foo' => 'bar']);
    // Here I load gates
    $myImpl = app(MyImplementation::class);
    $myImpl ->loadGates(); 
    return $next($request);
}

Мой сервис : определение шлюза. Для тестирования я просто возвращаю «true», но никогда не попадаю в Gate :: define ().

class MyImplementation
{
     public function loadGates()
    {
        //dd("Test 1"); // reach here
        Gate::define('create-user', function ($user) {
            dd("Test 2"); //never reach here
            // "foo" will be used here to define Gates.
            return true; 
        });
    }
}

Мне интересно, почему я не вхожу в Gate :: define ().

Я что-то упускаю здесь, пожалуйста?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...