В моем приложении 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 во что-либо еще .
Кто-нибудь знает, что может быть не так?