Skip to content

Priority of event listener is ignored #14547

@Tocacar

Description

@Tocacar

I have a doctrine.event_listener configured in my services.yml:

  ams.cage_listener:
      class: AMS\ColonyBundle\EventListener\CageListener
      tags:
          - { name: doctrine.event_listener, event: onFlush }

In that event listener, I am looking for Cage entities and conditionally updating a 'number' property. The Cage::number entity property also happens to be the field used for a StofDoctrineExtentions Gedmo/Sluggable property ($slug is in the same entity class):

    /**
     * @var string $slug
     *
     * @Gedmo\Slug(fields={"number"}, updatable=true)
     * @ORM\Column(name="slug", type="string", length=20, unique=true)
     */
    private $slug;

This means I need the slug to be regenerated. if my onFlush listener method changes the Cage::number property.

Unfortunately, Sluggable also listens for the onFlush event and executes before my own listener method. I tried adding a priority tag to my service definition to make it execute first:

  ams.cage_listener:
      class: AMS\ColonyBundle\EventListener\CageListener
      tags:
          - { name: doctrine.event_listener, event: onFlush, priority: 100000 }

But this has no effect (Gedmo's onFlush listener still executes first). Is this a bug? Or is there any way I can make my own listener method execute before Gedmo's?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions