|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : octobre 2010 Messages : 28 ![]() |
Bonjour,
J'ai un module se présentant sous forme de questionnaire en cascade. Quand on coche une case du formulaire, la question d'après s'affiche. J'utilise donc un formulaire avec une bonne dose de jQuery par dessus. Actuellement, ce formulaire s'affiche dans une page à part entière. J'aimerais cependant aussi poul'afficher dans une lightbox depuis n'importe quelle page du site. Ma lightbox (Colorbox pour être plus précis) me demande juste d'avoir la page à charger dans l'attribut href du lien. Mon formulaire s'affiche donc avec le layout. Si je désactive le layout pour cette action, il ne s'affichera pas bien dans la page à part entière. Je ne trouve donc pas comment faire pour rendre ce formulaire accessible des 2 manières. J'espère avoir été un minimum explicite :-) Merci d'avance pour votre aide ! |
|
|
00
|
|
|
#2 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
A priori, dans ta box, tu dois afficher une page html. Donc avec les entêtes et tous le barda. Ce qui proviens du layout.
Donc, si tu actives le layout, tu as une page viable, mais pleins d'entête que tu ne veux pas utiliser. Si tu ne l'active pas, tu as ce que tu veux, mais la page n'est pas viable... La solution est de créer un deuxième layout, avec le minimum pour décorer ta page. Et ensuite, plutôt que de désactiver le layout, il faut lui dire d'utiliser le light à la place du courant.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : octobre 2010 Messages : 28 ![]() |
Oui mais je dois pouvoir utiliser mon module à la fois dans la colorbox et dans une page normal.
A la limite, je dois pouvoir créer un component avec mon formulaire dedans puis créer 2 actions appelant le component :
Mais le problème est que du coup, la même url n'est pas utilisée pour appeller ces 2 actions. Mon lien permettant d'ouvrir le questionnaire dans la box, est de la forme : <a href="http://www.monsite.com/monmodule/questionnaire"> afin de de ne pas être intrusif (permet d'accéder au questionnaire avec le layout normal si le js n'est pas activé). Du coup je n'ouvre pas le questionnaire light dans la box mais le normal. Une solution serait de faire un traitement javascript ajoutant Light à a fin de l'url afin de charger le questionnaire light dans la box seulement si le js est activé et ainsi obtenir : <a href="http://www.monsite.com/monmudle/questionnaireLight"> Mais je trouve cette méthode un peu sale. Tu verrais une autre solution ? |
|
|
00
|
|
|
#4 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Crée deux route avec un paramètre non obligatoire, remplis par défaut.
Le paramètre devra avoir le même nom dans les deux route. Tu envois l'une ou l'autre suivant le cas. Dans ton action (unique) tu vérifies le paramètre (qui est rempli par défaut par la route) et suivant le cas, tu mets l'un ou l'autre layout. La seule duplication est alors dans la route.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#5 | ||
|
Invité régulier
![]() Inscription : octobre 2010 Messages : 28 ![]() |
Oula, j'ai pas bien compris ce que tu me conseille la.
En gros, je créé une route questionnaire et une route questionnaireLight, les 2 amenant a mon action questionnaire. La première route a le paramètre "light" vide tandis que la seconde à ce paramètre à true. Dans mon action executeQuestionnaire, je fais un test genre : Code :
C'est bien ça ou j'ai mal compris quelque chose ? Du coup je suis obligé de faire le traitement js (en soit ce n'est pas dramatique non plus). Mais pourquoi ne pas créer une seule route ? |
||
|
|
00
|
|
|
#6 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Met donc le paramètre à false sur l'autre route.
Tu n'as pas besoin de donner le paramètre à la route, vu que symfony va le positionner par défaut. Il suffit d'utiliser la bonne route pour que le paramètre soit utiliser. Donc pas de besoin en JS.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#7 | ||||||
|
Invité régulier
![]() Inscription : octobre 2010 Messages : 28 ![]() |
J'ai du mal à voir comment le choix va être fait pour savoir si c'est le light ou non.
Voilà ce que j'ai actuellement : apps/frontend/config/routing.yml Code :
Code :
Code :
En tout cas, merci pour ton aide |
||||||
|
|
00
|
|
|
#8 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Il faut que l'url des deux route soit différente, si non symfony ne pourra faire la différence et adressera toutes les entrées à la première règle.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#9 | ||
|
Invité régulier
![]() Inscription : octobre 2010 Messages : 28 ![]() |
Je crois commencer à comprendre.
Code :
Le mieux serait (dans l'absolu) que mes 2 questionnaires aient la même url, et de détecter si l'affichage se fait dans la box ou non ; mais je doute que ce soit possible. |
||
|
|
00
|
|
|
#10 | ||||
|
Membre habitué
![]() Ludovic HenryÉtudiant Inscription : octobre 2009 Messages : 97 ![]() |
Sinon, pourquoi ne pas avoir une seul route et mettre le paramètre light par défaut à false ?
Code :
Code :
|
||||
|
|
00
|
|
|
#11 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
C'est la même solution... côté code.
Après, côté route, les deux se valent. Tant que la route avec le paramètre par défaut reste la route normale d'accès. Que l'autre s'appelle : - www.monsite.com//questionnaire/light - www.monsite.com//questionnaire/true - www.monsite.com//questionnaire_light - http://www.monsite.com//toto_est_par...vous_patientez Cela n'a pas réellement d'importance.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Inscription : octobre 2010 Messages : 28 ![]() |
Merci à vous 2 pour votre aide.
J'ai réussi à faire ce que je voulais du coup. 2 routes, un test dans l'action, et j'initialise la box en js en ajoutant /light à la fin du href actuel. De cette manière, si on clic sur le lien, on charge le questionnaire dans la box, mais si on fait "ouvrir dans une nouvelle fenêtre", on charge le questionnaire avec le layout normal. Merci encore ! |
|
|
00
|
|
|
#13 | ||
|
Invité régulier
![]() Inscription : octobre 2010 Messages : 28 ![]() |
J'aurais tout de même une autre question.
Dans le fichier view.yml de mon application j'ai : Code :
Est il possible de configurer ca dans le yml ou est ce que je suis obligé d'enlever du yml et de le mettre directement dans le fichier du layout ? |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com