Я пытался внедрить security.token_storage
сервис через CompilerPass
, у меня нет ошибок, и пользователь в данный момент зарегистрирован, однако при доступе к TokenStorage $tokenStorage->getToken()
я получил нулевой ответ.
Я проверил эти ссылки для ссылки, но мне не удалось получить действительный токен.
Как внедрить общий сервис из прохода компилятора в Symfony и Доступ в данный момент зарегистрированный пользователь в UserRepository в Sylius
У вас есть идея, почему он возвращает нулевой ответ?
- Версия Sylius: 1.4 и Symfony 4.4
Класс пакета:
public function build(ContainerBuilder $container)
{
parent::build($container);
$container->addCompilerPass(new ModifyRepositoryPass());
}
ModifyRepositoryPass класс:
class ModifyRepositoryPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
$container
->getDefinition('sylius.repository.order')
->addMethodCall('getTokenStorage', array(
new Reference('security.token_storage')
));
}
}
Получить токен:
class OrderRepository extends BaseOrderRepository
{
/** @var TokenStorageInterface */
protected $tokenStorage;
public function getTokenStorage(TokenStorageInterface $tokenStorage)
{
$this->tokenStorage = $tokenStorage;
}
public function createListFilter()
{
$token = $this->tokenStorage->getToken()); // NULL token
}
Config.yml
sylius_order:
resources:
order:
classes:
repository: AppBundle\Repository\OrderRepository
#method: getTokenStorage also, I tried inject expression, but it does not work
#arguments: ["tokenStorage", "expr:service('security.token_storage').getToken()"]