Рабочий процесс ввода места слушателя - PullRequest
2 голосов
/ 19 сентября 2019

Я работаю с компонентом Workflow в symfony 4.3.Для моей сущности у меня есть свойство маркировки и свойство transition_contexts.Переходный_контекст имеет тип JSON, например

[{"time": ..., "context":[all info I want], "new_marking" : "some_place", {etc...}]

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

[{"time": ..., "context":[], "new_marking" : "creation"}]

Для всех других переходов я использую функцию apply (), где я могу установить массив контекста, но для инициализации с начальным местомЯ не знаю, как это сделать.

Я читал о слушателях, поэтому я попытался

class FicheSyntheseTransitionListener implements EventSubscriberInterface
{
    private $security;
    private $connection;

    public function __construct(Security $security, ManagerRegistry $em) 
    {
        $this->security = $security;
        //ManagerRegistry au lieu de EntityManagerInterface car on a plusieurs entityManager
        $this->connection = $em->getManager('fichesynthese');
    }

    public function addRedacteur(Event $event)
    {
        $context = $event->getContext();

        $user = $this->tokenStorage->getToken()->getUser();
        if ($user instanceof UserInterface) {
            $context['user'] = $user->getUsername();
        }

        $event->setContext($context);
        $this->get('doctrine')->getManager('fichesynthese')->flush();
    }


    public static function getSubscribedEvents()
    {
        return [
            'workflow.fiche.entered.creation' => ['addRedacteur'],
        ];
    }
}

Но, похоже, это не учитывается.Есть ли способ добиться этого?Ручной вызов функции, которая устанавливает начальную маркировку?Спасибо

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