IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

[route] Charger un component dans lightbox [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 28
    Par défaut [route] Charger un component dans lightbox
    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 !

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    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.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 28
    Par défaut
    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 :
    • executeQuestionnaire avec le layout normal.
    • executeQuestionnaireLight avec un second layout plus light.


    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 ?

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    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.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 28
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if($request->getParameter('light'))
      $this->setLayout('light');
    Et du coup dans la page appelant la box. Je fais un traitement js sur le lien pour ajouter ?light=true à la fin.

    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 ?

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] Charger un template dans une varaible depuis un component
    Par mathieu44800 dans le forum Symfony
    Réponses: 4
    Dernier message: 17/10/2009, 10h39
  2. [PL/SQL] Charger une table dans une collection
    Par nosnoss dans le forum Oracle
    Réponses: 10
    Dernier message: 03/03/2005, 17h56
  3. charger une scene dans la memoire de la carte video
    Par Arnaudv6 dans le forum OpenGL
    Réponses: 10
    Dernier message: 11/09/2004, 01h44
  4. Ajout d'un Component dans un Container
    Par willowII dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 07/09/2004, 18h08
  5. [ServletContext]Charger une ressource dans la servletContext
    Par lalou33 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 25/06/2004, 14h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo