Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/01/2011, 10h18   #1
Membre habitué
 
Inscription : juin 2006
Messages : 488
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 488
Points : 116
Points : 116
Par défaut changer de layout avec un form

Voila j'aurai besoin de changer de layout pour un formulaire.
Pour l'ouverture ça ne pose pas trop de probléme en reprenant un post:
lien

Code :
1
2
3
questionnaire:
  url: /questionnaire/:light
  param: { module: monmodule, action: questionnaire, light: false }
et dans l'action Edit:
Code :
1
2
3
4
 
 
if ( $request->getParameter('light') )
       $this->setLayout('light');
par contre comment faire, apres que le formulaire soit soumis pour qu'il revienne au layout allégé ?

j'ai tenté dans l'action processForm de récuperer le layout via
$this->getLayout()
mais il ne me retourne rien et donc je me retrouve avec le layout général.
quelqu'un aurait il une idée ?
erictomcat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 11h21   #2
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Et je suppose que, suivant le cas, le layout doit être différent et que la fenêtre peut être parfois l'un, parfois l'autre. Histoire de bien te simplifier la vie

Il faut que, dans la fenêtre tu transfères un paramètre avec le layout a afficher. Soit, si c'est un form, dans un champ caché du form. Si non, dans tous les cas possible, dans l'url. Je le mettrais en dernier, du genre :
http://www.monappli.loc/chemin/param1/param2/light.html
ce qui pourra donner dans le cas plus courant un
http://www.monappli.loc/chemin/param1/param2.html

Et dans la route, du définis une valeur par défaut pour ce troisième (dans l'exemple) paramètre. S'il est a light, tu mets en light, si non, en normal. Et ça marche aussi en cas de form. Merci symfony !
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 11h32   #3
Membre habitué
 
Inscription : juin 2006
Messages : 488
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 488
Points : 116
Points : 116
disons que si j'ouvre un formulaire avec un certain layout j'aimerai que la page aprés soumission s'ouvre aussi avec le même layout.

Si je comprend bien je doit, dans l'action Edit mettre une variable pour que dans le configure du form je crée un champ caché qui intègrera le nom de mon layout et surchargé mon action processForm pour tester si ce champ existe, quelle est sa valeur et modifié mon layout en conséquence ,

Bien sur je travaille sur un module admin
erictomcat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 12h27   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505


Là, t'es mort !

En module admin, je doute que cela soit gérable.

Le truc c'est que tu dois bien noter quelque part que le prochain affichage de la donnée est prévue en light ! Et accessoirement, si ton user "oublie" l'écran ou le ferme sans le remplir, la séquence suivant ne doit pas, elle nécessairement commencer en light (c'est le plus compliqué à mon avis).

Je vois deux solutions potentiel pour transférer l'information.
Tu passes par un attribut sur l'objet user. Mais la partie "je reviens sur un qui ne doit pas être light" me semble plus difficile a gérer, a toi de voir si tu peux nettoyer.
Autre possibilité, toujours avec l'objet user, mais tu crées des méthodes pour y mettre l'intelligence de la solution.
A voir si tu as une donnée qui est unique dans ton écran et permettrai de l'identifier (un Id d'enregistrement + une table ?)
La difficulté ici c'est de faire le distinguo entre deux ouvertures du même écran sur le même enregistrement, une en light et une en normal

Mais pourquoi donc veux-tu construire un truc aussi compliqué ?

Dans les idées a creuser aussi, deux route avec chacune un paramètre optionnel de même nom mais une valeur par défaut différente. Jamais tu ne renseigne le paramètre optionnel. Une route va ouvrir en normal, l'autre en light. Reste un "problème", comment indiquer la route a utiliser au form ??? là, je n'ai pas la solution.

Mais qu'allait-il donc faire dans cette galère !
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 14h56   #5
Membre habitué
 
Inscription : juin 2006
Messages : 488
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 488
Points : 116
Points : 116
en faites je liste des enregistrements avec 2-3 données affiché.
sur chaque enregistrement il y a un lien pour avoir plus de détails et modifié 2 états.

pourquoi un layout light pour cette fenêtre ? pour que l'utilisateur n'ai pas tendance à continuer sa navigation dans cette fenêtre et qu'il ait besoin de revenir à la fenêtre principal.
erictomcat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 15h27   #6
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Je suis sur que tu as raison, même si je préfère, par simplicité pour l'utilisateur et pour ne pas augmenter le nombre d'onglets d'une manière exponentiel, gérer toute mes applications dans une seule fenêtre.

Et je n'ai pas d'autre solutions que celles déjà proposée.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2011, 15h38   #7
Membre habitué
 
Inscription : juin 2006
Messages : 488
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 488
Points : 116
Points : 116
je vais laissez ça de coté et je creuserait plus tard
erictomcat est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h20.


 
 
 
 
Partenaires

Hébergement Web