Если мое понимание хорошее, ваш сервис my_service - это то, что вы хотите сделать, прежде чем сохранить свою сущность. Это сервис, который должен запускаться событием prePersist.
Итак, я бы просто преобразовал этот сервис в слушателя доктрины.
services:
my_service:
class: Acme\Bundle\AcmeBundle\DependencyInjections\MyService
arguments:
entityManager: "@doctrine.orm.entity_manager"
tags:
- { name: doctrine.event_listener, event: prePersist }
В классе MyService вы теперь должны определить метод prePersist для всего, что вы хотите сделать.
use Doctrine\ORM\Event\LifecycleEventArgs;
class MyService
{
public function prePersist(LifecycleEventArgs $args)
{
$entity = $args->getEntity();
$entityManager = $args->getEntityManager();
(...)
}
}
Вы даже можете удалить аргументы своей службы, поскольку LifecycleEventArgs предоставляет метод для получения менеджера сущностей.
Наконец, у вас есть этот слушатель
services:
my_service:
class: Acme\Bundle\AcmeBundle\DependencyInjections\MyService
tags:
- { name: doctrine.event_listener, event: prePersist }
Я надеюсь, что это ответ на ваш вопрос