Service needs to look like this
services: user.listener: class: AppBundle\EventListener\UserListener arguments: [ "@security.password_encoder" ] tags: [ { name: doctrine.event_listener, event: prePersist } ]
Listener should look like that
// AppBundle\EventListener\UserListener.php namespace AppBundle\EventListener; use Doctrine\ORM\Event\LifecycleEventArgs; use AppBundle\Entity\User; use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface; class UserListener { protected $container; public function __construct(UserPasswordEncoderInterface $encoder) { $this->encoder = $encoder; } public function prePersist(LifecycleEventArgs $args) { $entity = $args->getEntity(); $encodedPassword = $this->encoder->encodePassword($entity, $entity->getPassword()); $entity->setPassword($encodedPassword); } }