Symfony 3.4 - отправка параметра в событие DoPrine prePersist - PullRequest
0 голосов
/ 04 июля 2018

У меня есть несколько событий Doctrine prePersist, которые мне нужно использовать, чтобы настроить / настроить некоторую информацию Stripe (идентификатор клиента Stripe, информацию о CC и т. Д.). Как я могу передать свой ключ API в событие, если оно находится в app/parameters.yml? Мои объявления о событиях в app/services.yml выглядят так:

AppBundle\EventListener\ProductHandler:
    tags:
        - { name: doctrine.event_listener, event: prePersist }

AppBunlde\EventListener\UserHandler:
    tags:
        - { name: doctrine.event_listener, event: prePersist }

1 Ответ

0 голосов
/ 05 июля 2018

Прослушиватель событий - это служба Symfony, поэтому вы можете просто передать параметр в качестве аргумента:

AppBundle\EventListener\ProductHandler:
    arguments: [ "%my_parameter%" ]
    tags:
        - { name: doctrine.event_listener, event: prePersist }

…

Ваш конструктор получит параметр в качестве первого аргумента:

class ProductHandler
{
    private $myParameter;

    public function __construct(string $myParameter)
    {
        $this->myParameter = $myParameter;
    }
}

Если вы используете автопроводку и уже внедряете другие сервисы в конструктор, вы можете использовать следующую запись:

AppBundle\EventListener\ProductHandler:
    arguments: { $myParameter : "%my_parameter%" }

Таким образом, не имеет значения, является ли $myParameter первым аргументом конструктора; вам просто нужно убедиться, что оно соответствует имени переменной.

...