Gestion dynamique du template

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tous,

Je suis en pleine découverte de Symfony. J'essai actuellement d'approfondir ma connaissance des templates. J'ai déjà parcouru et mis en pratique les inclusions/héritage de template.

Là où je bloque c'est lorque je souhaite "manipuler" mon template depuis mon contrôleur. Et je bloque sur l'architecture/conception à adopter. Imaginons que j'ai un bundle Blog. Par exemple j'aimerais, dans certains contexte, pouvoir depuis mon contrôleur choisir d'afficher ou non mon menu, afficher ou non le footer, changer le style CSS à appliquer etc En fait, j'aimerais pouvoir gérer mon layout comme si c'était lui-même un bundle que j'appelerais depuis mes controleurs dans le bundle Blog. Layout serait donc un service ? Est ce réalisable ? pouvez vous me donner des conseils sur comment intégrer un tel système ?

Merci !!

+0 -0
Auteur du sujet

Hello, merci de ta réponse ! Je vais essayer de clarifier ;)

Un contenu, 2 templates : Par exemple j'aimerais pouvoir définir dans mon contrôleur en fonction du contexte qu'un contenu doit s'ouvrir dans une nouvelle fenêtre ( template "base" disons ) ou bien dans une fenêtre modale. Je vois comment faire un if et retourner 2 renders différents, mais il me semble plus propre de faire ça à l'échelle "layout controller". On envoit l'ensemble des parametres, contenu, nom de la vue etc et il génère la vue adéquate.

Avec ou sans menu ? Avec ou sans le footer ? J'aimerais aussi pouvoir masquer ou non mon menu ( toujours en fonction du contexte ). Je suis d'accord qu'on peut faire ça via l'envoie de paramètres au template mais est ce acceptable/scalable comme solution ?

Changer le CSS Comment changer le css depuis le contrôleur en fonction de l'utilisateur/contexte ?

J'ai l'impression que ces uses cases sont résolvables via l'inclusion de template mais ca me semble pas optimale comme solution. J'ai lu des posts où il était conseillé de créer un bundle "Site" qui permettait de gérer les menus etc. Mais je n'arrive pas a voir vrmt comment l'implémenter, ce qu'il doit géer etc. Encore une fois, merci de l'aide !!

+0 -0

Salut !

Est-ce qu'on peut te demander un peu plus d'explications, notamment le scénario (requête AJAX, visuel connecté/déconnecté, etc.) plutôt que les considérations techniques ?  :)

Evitez qu'on vous dise de les lire : FAQ PHP et Symfony 2Tutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+0 -0
Auteur du sujet

Hello Ymox,

merci pour ta réponse. Par exemple mon scénario 2: un utilisateur a choisi le design 1 (blanc et noir ) , un autre a choisi le design rouge et bleu. Ses préférences sont enregistrées. Comment procéderais tu pour adapter le css à l'utilisateur?

+0 -0

Là, si ce n'est que du CSS, je regarderais pour nommer le fichier CSS selon le choix de l'utilisateur, et je le chargerais en conséquence. Mais le CSS n'impacte pas trop la structure HTML, normalement  ;)

Evitez qu'on vous dise de les lire : FAQ PHP et Symfony 2Tutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+0 -0
Auteur du sujet

Oui mais techniquement, comment ferais tu pour le charger depuis le template twig ?

EDIT: le css n'est qu'un exemple, mais par exemple j'aimerais mettre en préférence l'affichage ou non du menu par exemple ( et là on aurait du html de modifié )

Édité par LePhoenix

+0 -0

Mmm, là ça m'évoque plus un système de CMS, avec des zones remplies ou pas. Un contrôleur (ou une action) par zone qui vérifie selon la demande de l'utilisateur ce qu'il souhaite, quitte à ce que soit caché en session pour éviter de la charge…

Disclaimer : ce sont des idées en live, à voir si c'est possible, facile, etc.

Evitez qu'on vous dise de les lire : FAQ PHP et Symfony 2Tutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+0 -0

En fait, même pas besoin d'une action par zone. Tu pourrais simplement prévoir des "widgets" que tu places dans telle ou telle zone, et une action qui prend en paramètre la zone se charge d'aller récupérer les widgets dans l'ordre nécessaire et les rendre. Il faudrait donc enregistrer d'une manière ou d'une autre le service contenant la logique du widget (et celui-ci rendrait le template, donc saurait lui-même) ainsi que la zone associée, par exemple.

Édité par Ymox

Evitez qu'on vous dise de les lire : FAQ PHP et Symfony 2Tutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+0 -0
Auteur du sujet

Ok pour les widgets je suis d'accord pour ça. Peux tu me donner un exemple concret de l'implémentation d'un service dans ce cas là ? J'aimerais un exemple le plus concret possible, car sur l'idée générale de séparer les wisget je suis d'accord

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte