Bonjour,

Je cherche à créer une page de config pour une app web sur Symfony3.
En gros ça sera surtout des cases à cocher pour activer ou désactiver des fonctionnalités.

Je ne vois pas trop quel serait le meilleur moyen de stocker ces variables et d'y accéder.

J'ai créé une entité Config avec un champ par variable. Mais pour récupérer les valeurs avec le repository c'est assez contraignant, et moche. Il me faudrait pouvoir accéder à l'instance de Config, dans les controleurs et dans twig, comme on le fait avec l'utilisateur courant ( $this->getUser() / {{app.user}} ) sans qu'une requete en base ne soit effectuée à chaque appel de la config.
Du coup j'ai pensé à stocker la config en session, puisque les sessions sont facilement accessibles, mais les modifs ne seraient pas prises en compte avant l'expiration de la session du client.

Il y a peut-être moyen de le faire avec les paramètres de symfony mais je ne vois pas comment.

Si quelqu'un pouvait m'éclairer, ça me serait d'une grande aide ! Merci d'avance !

4 réponses


G1.3
Réponse acceptée

Salut

J'ai déjà utilisé le bundle SettingsBundle qui pourrait correspondre à tes besoin (https://github.com/dmishh/SettingsBundle)

Dit moi si ça fait l'affaire ;)

raph59
Auteur

Salut G1.3 !

Merci beaucoup, c'est exactement ce dont j'ai besoin !
Par contre je viens de tester et le bundle ne supporte pas Symfony v3.
Il y a un problème avec la construction du formulaire (SettingType.php --> buildForm). En effet le type de champ est sous la forme 'text' au lieu de 'TextType::class'. Du coup j'ai une belle erreur 500.
J'imagine que mon choix se limite à trouver un autre bundle compatible Symfony3 ou à déplacer ce bundle hors du dossier vendor et le corriger ensuite.
Que ferais-tu à ma place?

Je crois que c'est en cours de dev, tu peux utiliser leur version de dev en attendant une version finalisée pour un sf3

Dans mon composer.json :

"dmishh/settings-bundle": "2.0.*@dev",

Je l'utilise dans un projet sous Sf3.2 et ça passe ;)

raph59
Auteur

Merci G1.3
En fait, c'était déjà la version que j'avais installée.
En fouillant la doc j'ai fini par comprendre qu'il fallait indiquer clairement le type de champ dans le fichier config pour que ça fonctionne :

Dans le fichier config.yml :

dmishh_settings:
    settings:
        mon_parametre:
            type: Symfony\Component\Form\Extension\Core\Type\CheckboxType

Ainsi tout fonctionne parfaitement !! Merci beaucoup G1.3