Gestion dynamique du template

a marqué ce sujet comme résolu.

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 !!

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 !!

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?

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  ;)

+0 -0

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é )

+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.

+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.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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