Bonjour,

Débutant sur Symfony, et après avoir chercher pendant un bon moment, je n'arrive pas à trouver comment mettre en place des middleware avec symfony 4 (j'utilise actuellement la version 4.3). Je voulais savoir si je devais me rapprocher plutôt des EventListener ou encore du composant Messenger, mais je n'ai pas l'impression que cela corresponde parfaitement à un vrai middleware...

Est-ce que quelqu'un peut m'éclairer sur ce sujet ?

Merci d'avance

4 réponses


Digivia
Réponse acceptée

Salut,

Effectivement, pour ce cas d'usage, les Event sont totalement adaptés. Il est possible d'écouter (listener) ou de souscrire (subscriber) à des événement Symfony, ou des événements que l'on aura créé. C'est très pratique pour des fonctions un peu transverses qu'on veut mettre en place sur toute l'application.
Les événements symfony sont bien documentés, je te conseille d'aller voir ici : https://symfony.com/doc/current/reference/events.html, ce sont les événements dispatchés par le kernel, à différents niveau du processus http.
Tu devrais y trouver ton bonheur.

Hello,

Par définition, Symfony est un middleware, en tous cas suivant la définition de la PSR-7. En effet, il prend en charge une requête et renvoi une réponse... Il faudrait que tu définisses plus précisement ton besoin.

OhWait
Auteur

Salut,

Alors je vais essayer d'expliquer concrétement ce que je souhaiterais avoir :

  • Je souhaiterais avoir une méthode / middleware / action préalable qui s'xecute à chaque fois que l'utilisateur arrive sur certaines URL (exemple : tout URL commençant par /projet/mon-slug)
  • Malheureusement les projets ne sont pas de simples articles, mais sont une application à part entière : je fais donc un (des) Controller / projet, qui aura sa propre logique (+ ses models et ses vues)
  • Les projets ont cependant un point commun : ils ont besoin de connaitre les accès de l'utilisateur, et chaque utilisateur n'a évidemment pas accès à tous les projets.

Je ne sais pas si j'ai été suffisemment clair...

Merci pour l'attention portée !

OhWait
Auteur

Sans trop m'être penché dans la docs, je vois clairement que ça répond à mes besoins, et je te remercie pour ton aide ! :)