Symfony 4 onKernelRequest не вызывается, когда заголовок Content-Type равен application / json - PullRequest
0 голосов
/ 05 марта 2019

В моем приложении Symfony 4 у меня есть прослушиватель события onKernelRequest:

class TenantListener
{
    use ConnectionAwareTrait;

    /**
     * @var ConnectionWrapper
     */
    private $connection;
    /**
     * @var DatabaseCredentialProviderInterface
     */
    private $dataBaseCredentialProvider;

    /**
     * TenantListener constructor.
     * @param ConnectionWrapper $connection
     * @param DatabaseCredentialProviderInterface $dataBaseCredentialProvider
     */
    public function __construct(ConnectionWrapper $connection, DatabaseCredentialProviderInterface $dataBaseCredentialProvider)
    {
        $this->connection = $connection;
        $this->dataBaseCredentialProvider = $dataBaseCredentialProvider;
    }

    public function onKernelRequest(GetResponseEvent $event)
    {
        if (! $event->isMasterRequest() || ! $this->multiTenantEnabled()) {
            return;
        }

        $database = $this->dataBaseCredentialProvider->getDatabase();
        $this->connection->forceSwitch($database->getHost(), $database->getName(), $database->getUsername(), $database->getPassword());
    }
}

С service.yaml:

  App\MultiTenant\Listener\TenantListener:
    class: App\MultiTenant\Listener\TenantListener
    arguments:
      $connection: '@doctrine.dbal.central_connection'
    tags:
      - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }

Слушатель работает правильно, когда для Content-Type установлено значение application/vnd.api+json, что имеет место для большинства моих конечных точек. Но есть одна конечная точка, которая должна иметь тип содержимого application/json, и для этой конечной точки метод onKernelRequest не вызывается при отправке заголовка типа содержимого application/json, но вызывается, когда я устанавливаю заголовок te во что-либо еще .

Кто-нибудь знает, что может быть не так?

...