Dexylon
Dexylon

Reputation: 65

Symfony event subscriber not working even service is defined

I have an event subscriber:

namespace App\EventListener;

use App\Entity\Token;
use App\Model\EncryptUtils;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\Common\EventSubscriber;

class DatabaseSubscriber implements EventSubscriber
{

    public function getSubscribedEvents()
    {
        return array(
            'prePersist'
        );
    }

    public function prePersist(LifecycleEventArgs $args)
    {
        $entity = $args->getObject();

        if ($entity instanceof Token) {
            $enityt->setCreatedAt(new \DateTime());
        }
    }
}

And I've declared the service in services.yaml: parameters: locale: 'en'

services:

    App\EventListener\DatabaseSubscriber:
        tags:
            - { name: doctrine.event_subscriber, connection: default }

    _defaults:
        autowire: true      
        autoconfigure: true
        public: false       

        bind:
            $appSecret: '%kernel.secret%'

    App\:
        resource: '../src/*'
        exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'

    App\Controller\:
        resource: '../src/Controller'
        tags: ['controller.service_arguments']

But there's no way to get it working. I've also tried with an event listener but nothing happens

Upvotes: 2

Views: 5366

Answers (1)

Carles
Carles

Reputation: 368

You should declare your service after all the default configuration because if not, the default configuration is overriding yours.
So your services.yaml file should be:

services:

    _defaults:
        autowire: true      
        autoconfigure: true
        public: false       

        bind:
            $appSecret: '%kernel.secret%'

    App\:
        resource: '../src/*'
        exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'

    App\Controller\:
        resource: '../src/Controller'
        tags: ['controller.service_arguments']

    App\EventListener\DatabaseSubscriber:
        tags:
            - { name: doctrine.event_subscriber, connection: default }

Upvotes: 5

Related Questions