Bonjour,

je développe un CMS avec Laravel, mais je suis confronté à un problème de logique.

L'idée c'est que chaque page puisse posséder plusieurs blocs de contenu de différents types : html, galerie d'images, vidéo, etc.
Chacun de ces types doit se présenter sous la forme de module (plugin), activable ou non, et extensible (dynamiquement) : blockHTML, blockGalery, etc.
A priori je compte partir sur nwidart/laravel-modules pour mettre en place cette fonctionnalité.

L'idée pour l'instant c'est donc que chacun de ces modules hérite d'un modèle module avec lequel ils partagent tous certains attributs et méthodes. Mais chacun peut avoir des attributs et des méthodes qui lui sont propres.
Ils sont également tous sur la même table SQL.

Le modèle page a donc une relation one to many avec ces blocs.

Le problème c'est que je ne peux pas connaître le type de module avant d'avoir effectué une requête, et donc je ne vois pas comment gérer la liaison avec les tables (dans l'idée le modèle module devrait pouvoir être une classe abstraite, mais l'idée d'une liaison polymorphe dynamique me paraît extrêmement bancale) ou je ne vois pas comment dire à mes modules de s'auto-charger la classe qui leur correspond…

J'ai l'impression que le problème est pas si compliqué mais qu'il y a une bête logique qui m'échappe...

1 réponse