Skip to content

Event aliases not listed in completion for dispatch eventName parameter #2415

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
flavou45 opened this issue Mar 4, 2025 · 0 comments
Open

Comments

@flavou45
Copy link

flavou45 commented Mar 4, 2025

I’m encountering an issue where my event aliases are not listed in the autocompletion when using the dispatch() function, specifically on the eventName parameter. The aliases are correctly defined and work as expected at runtime, but they don’t appear in the completion suggestions.

Here is an example of my setup:

namespace App\Event\Planning;

/**
 * Définit les différents événements liés aux entités Rendez-vous (Rdv).
 *
 * Cette classe contient des constantes représentant les événements déclenchés
 * dans différents contextes de gestion des rendez-vous dans l'application.
 * Chaque événement est associé à une classe d'événement dédiée qui transporte
 * les données nécessaires pour les gestionnaires d'événements.
 */
final class RdvEvents
{
    /**
     * Déclenché lorsqu'un rendez-vous est en cours de mise à jour de ses données.
     *
     * Cet événement est associé à l'objet `RdvSetDataEvent` et permet d'effectuer
     * des traitements spécifiques après la mise à jour des données d'un rendez-vous.
     *
     * @Event("App\Event\Planning\RdvSetDataEvent")
     */
    public const string SET_DATA = 'rdv.set_data';

    /**
     * Déclenché juste avant la persistance d'un rendez-vous dans la base de données.
     *
     * Cet événement est associé à l'objet `RdvPrePersistEvent` et peut être utilisé
     * pour valider ou modifier les données avant l'enregistrement.
     *
     * @Event("App\Event\Planning\RdvPrePersistEvent")
     */
    public const string PRE_PERSIST = 'rdv.action';

    /**
     * Déclenché juste après la persistance d'un rendez-vous dans la base de données.
     *
     * Cet événement est associé à l'objet `RdvPostPersistEvent` et permet d'effectuer
     * des actions post-enregistrement, comme des notifications ou des mises à jour externes.
     *
     * @Event("App\Event\Planning\RdvPostPersistEvent")
     */
    public const string POST_PERSIST = 'rdv.complete';

    /**
     * Déclenché lorsqu'un rendez-vous est confirmé.
     *
     * Cet événement est associé à l'objet `RdvConfirmEvent`. Il est utilisé pour
     * déclencher des comportements spécifiques suite à une confirmation de rendez-vous,
     * comme l'envoi d'e-mails ou la mise à jour de l'historique.
     *
     * @Event("App\Event\Planning\RdvConfirmEvent")
     */
    public const string CONFIRM = 'rdv.confirm';

    /**
     * Alias des événements
     *
     * Ces alias sont utilisés notamment par `RegisterListenersPass` pour
     * associer les gestionnaires aux événements via leurs classes.
     */
    public const array ALIASES = [
        RdvSetDataEvent::class => self::SET_DATA,
        RdvPrePersistEvent::class => self::PRE_PERSIST,
        RdvPostPersistEvent::class => self::POST_PERSIST,
        RdvConfirmEvent::class => self::CONFIRM
    ];

    /**
     * Constructeur privé pour empêcher toute instanciation de cette classe.
     *
     * Cette classe est conçue pour être utilisée de manière statique uniquement.
     */
    private function __construct()
    {
    }
}

And when dispatching the event:

$dispatcher->dispatch(new RdvConfirmEvent(), RdvEvents::CONFIRM);

Even though the alias 'RdvEvents::CONFIRM' is correctly registered and works at runtime, it doesn’t appear in the autocompletion when typing the eventName in the dispatch() function.

I would like this to work in the same way as it does for FormEvents or KernelEvents, where the event names are properly suggested in the completion.

Is there a specific configuration I might have missed, or is this a known limitation?

Thanks in advance for your help!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant