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 :

Comment inclure un CRUD dans une fenêtre modale


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 124
    Par défaut Comment inclure un CRUD dans une fenêtre modale
    Bonjour à tous,

    J'ai réalisé un CRUD symfony2 avec entity et formtype.

    j'ai ensuite créer un modal dans celui ci, j'ai fait un {{render(controller('bundle:controllerName:listEntity {parameters}

    Je charge donc la liste de mes articles ou client avec mes bouttons ajouter modifier sup quit etc..;

    le problème est que des que je click sur l'un des bouttons de mon formulaire de forme logique, il quitte ma page en cour et me charge la nouvelle.

    hors dans le cas d'un modal je souhaiterais tous le crud dans le modal.

    Il y aurait il une possibilité d'imposer le chargement dans la modal exemple si le passInfo vaut "/_fragment".

    Pour mon crud j'ai utilisé des boutons que j'utilise en jquery avec window.location replace et le bundle jsBundle.

    Je résume :

    Appeler dans une modal un crud et l'hors d'un click pour ajouter ou updater charger la method dans la modal et non être rediriger sur l'adresse du crud.

    Merci pour toute aide

  2. #2
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    le CRUD généré n'est pas en ajax donc tu mets ton formulaire dans le modal et à chaque rechargement de la page, en javascript tu lances le modal pour qu'il s'affiche.

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 124
    Par défaut
    Citation Envoyé par dukoid Voir le message
    le CRUD généré n'est pas en ajax donc tu mets ton formulaire dans le modal et à chaque rechargement de la page, en javascript tu lances le modal pour qu'il s'affiche.

    oui bah justement c'est la que je cale car dans mon modal j'appel le path() de ma liste et un click sur nouveau appel le path create donc je quite le modal et ma view et suis redirigé sur mon path cretae de mon crud.

    Hors la dans ce cas de figure c'est si j'accède d'une autre view via un button pour lancer ce modal et me permettre de rajouter ou selectionner

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 124
    Par défaut
    J'ai bien compris que la modal charle mes path au click sur l'élément qui active la modal.

    Par contre une fois charger comment changer le contenu de ma div class="madal-body" ?

    je viens de lire cela sur bootstrap:

    Multiple open modals not supported

    Be sure not to open a modal while another is still visible. Showing more than one modal at a time requires custom code.

    je cherche à interpréter un autre path une fois le modal chargé.

    Si je dois le faire en js ou query avec append pourquoi pas mais du coup je ne peux pas inclure mon formtype.

  5. #5
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    je ne comprends pas tes explications

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 124
    Par défaut
    comment rafraichir un modal ouvert vers une autre route

    mon crud quand j'affiche la liste de tout mes articles par exemple.

    bon j'ai un boutons nouveau article ca me renvois en path vers article/create

    dans mon modal je charge ma liste avec un {{render(controller(.....))}}

    dans cette view de ma liste j'ai des bouton qui redirige en js avec jsBundle.

    je voudrais que lorsque je suis dans un modal récupérer le path create ou update etc dans le même modal ou un autre mais comment faire.

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 124
    Par défaut
    bonjour, j'avance sur les modals.

    Symfony c'est plutôt pas mal quand on sait mais parfois c'est casse bonbons.

    voila le mon problème:

    habituellement je passe mes variables js à mes path avec un window.location.replace().

    Hors, comment fait on pour un render qui appel la méthode de mon controller?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {{ render(controller('boutiqueBundle:Librairie:traitement', {'num': 5, 'id' : 2, 'mode' : 'update'})) }}
    je souhaiterais que sur un click qui récupère l'id de la ligne de mon tableau la passer à l'id et remplacer le id : 2 par ma variable js.

    Comment faire le replace ou autre.

  8. #8
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 124
    Par défaut
    dans mon modal j'ai chargé 3 blocs liste insert et update.

    Je passe par des render(controller(......)) justement pour ne pas à avoir à inclure un model que je chargerais en jquery.

    Par contre pas de rafraichissement une fois les données traité ok me suis donc dis:

    en js element.click() pour fermer le modal au submit et element.click() pour rouvrir le modal

    mais rien n'y fait pas moyen d'assigner un paramètre js à un de mes paramètre de la méthode de mon controller.

    alors que si je met une valeur à la main tout est ok

    ils sont vraiment chiant js et twig ils arrêtent pas de s'engueuler

  9. #9
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    je ne sais pas si tu as compris comment fonctionne le render controller.

    tu n'as pas affaire à de l'asynchrone les données ne sont pas mises à jour comme ça en temps réel.
    le render controller va créer un bout de page et ne sera exécuté qu'UNE FOIS pour y être inclus donc dans la construction de la page qui sera affiché à la fin.

    donc à aucun moment le render controller sera exécuté une autre fois....

    si tu veux se comportement, il faut faire de l'AJAX ou en Symfony voir du coté du hinclude

  10. #10
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 124
    Par défaut
    Mais j'entends complètement.

    ça explique pas comment passer une valeur js pour un ou des paramètres à la twig dans un render.

    je souhaite faire un render avec un paramètre qui serait une valeur js possible ou ps si oui comment bute de la question.

    Maintenant si je dois inclure un model et devoir l'alimenter en ajax ok mais alors pourquoi monter mon formtype de mon controller si j'utilise pas de modal.

    C'est à en perdre son latin sérieux.

    comment faire ça:

    variable js = x

    {{render(controller(nameBundle:namecontroller:namemethode {'nom': valeur ajax x}))}}

    avec un path et un window.location et un replace c'est possible donc pourquoi pas avec un render juste ça pourquoi.

    Je demande cela car j'ai une view qui doit me permettre d'atteindre une autre pour ajouter modifier ou supprimer au travers de celle ci sans perdre les données déjà rentrer et je ne compte pas enregistrer tout mon formulaire en session j'ai 25 elements.

    De plus franchemant dans 'action c'est tout les 36 du mois donc je voulais simplifier.

    Quand au rafraichissement je sais que pas possible pour ça après action je fais un closeElement.click() et direct un modlElement.click et ça marche si je met dans le render une valeur à la main.

  11. #11
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    excuse moi je n'arrive pas à te comprendre. tu pars dans tous les sens, tu parle de plein de trucs à la fois. est-ce que tu te relis parfois ?

    je souhaite faire un render avec un paramètre qui serait une valeur js possible ou ps
    tu veux faire un render en ayant pour parametre une valeur javascript.

    ceci est illogique.

    je vais prendre exemple avec une page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <span>cooucou</span>
    {{render(controller(nameBundle:namecontroller:namemethode {'nom': valeur}))}}

    ce code sera traduit en HTML qu'une seule fois et envoyé au navigateur.
    tu ne pourras plus relancer le render donc à quoi ça sert de lui mettre une valeur JS dans le render puisqu'il a déjà été envoyé au navigateur et que tu ne pourras pas le relancer.

    dis moi ?

    _________________________________________

    ce que tu peux faire en utilisant ajax par exemple :

    pageprincipal.html.twig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <span>coucou</span>
    <div id="contenu"></div>
     
     
    <script>
      $.ajax {
          url:  "{{ url(......vers_action_controlleur.........) }}",
         data:  "xxx=" + valeur,
          ....
         function(data_rendu) {
              $("#contenu").html(data_rendu);
         }
    ...
    pagepartiel.html.twig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    la veleur est égal à {{ xxx }}

    dans le controlleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    .vers_action_controlleur {
       xxx = $request("xxx");
      ... traitement divers....
       rendu = render("pagepartiel.html.twig, xxx);
     
       return new reponse(rendu);
    }

  12. #12
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 124
    Par défaut
    bonjour Dukoid,

    En faite, j'ai une table four tout qui sert à plein de choses dans ce projet.

    Dans ma table (entite) j'ai donc une colonne type pour différencier.

    J'ai donc bien besoin de l'id du type et un status create ou update ou delete.

    Le formulaire qui gère les views de cette table son casi toute identique, j'ai donc fait un formulaire du tout et le cas échéant je rajoute dans ma view .

    dans mes routes j'ai par exemple: traitement/{type]/{id}/{mode}

    Dans ma view liste, j'ai un tableau que je récupère en appelant une méthode.

    return $this->render(............., array("liste"=> $liste_Entity));

    Dans cette dite view j'alimente un tableau auquel j'assigne un onclick en jquery pour récupérer l'id de la ligne.

    il faut donc bien avoir l'id pour savoir sur quoi traiter et faut donc bien un type pour savoir de quoi on parle quand au mode c'est une condition que j'utilise pour mon controller

    quand au modal je l'ouvre avec un lien qui me charge 2 render qui sont liste et le reste puisque je me sert du mode pour create update et delete.

    dans mon modal j'ai des boutton lien nouveau, modifier par exemple qui chacun pointes sur une div avec id en class semantic-content

    si je crée une nouvelle entré donc en jquery puisque je suis dans un modal donc js bah au submit jquery je traite et ensuite derrière je dis clos moi le modal via le lien close et toujours sur le submit je dis dans la foulé exécute le lien pour lancer le modal.

    Donc ça me recharge le tout et j'ai donc bien ma nouvelle valeur visible dans le modal.

    je sais que c'est pas une trait bonne pratique j'ai vu que ça me recharge beaucoup de choses dans ma console.

    quand au valeur js avec twig bon dans un path pour du js c'est un replace ou utiliser la methode jsbundle dans un render pourquoi ne pourrais pas une valeur js pour ma route.

    j'ai utilisé des renders pour remonter mes valeur et mes formtype et ainsi éviter d'avoir à faire des loops js pour alimenter mes éléments.
    Je ne me sert de jquery uniquement pour enregistrer.

    Ce qui m'intéresse dans ton dernier poste est le partial view que je ne connais pas.

    Si je suis le raisonnement d'un include, est ce que cela veut il dire que pour mon crud classique je dois inclure également la view.

    jquery onclick sur ligne récupe l'id pour une modification

    {{render(controller("boutiqueBundle:Librairie:traitement", {"num" : 5, "id" : '?????? id jquery' ,'mode' : 'create'} ))}}

    comment veux tu que j'alimente les bonne valeurs si j'ai pas le bonne id?

  13. #13
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 124
    Par défaut
    Merci beaucoup l'ami j'ai pas encore fini mais tu m'as fait voir ce qu'il fallait.

    Je passe par des includes

    par contre je me demande pour charger mes inputs pour un update par ex comment c'est géré une boucle entre les noms de mon formulaire {{form(form.x)}} et le jquery.

    dois je faire dans l'ordre 0 1 2... ou il y aurait il une méthode pour nom tel champs name="nom", prénom autre...

  14. #14
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    j'espère parceque là je ne pouvais plus rien faire pour toi

    dans un formType tu as ça à la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
       add("description', ......)           
        ...
        .....     
       public function getName() {
            return 'form_fiche_client';      // par exemple, tu met ce que tu veux.
        }

    en jQuery tu accède au champs "description" ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      description =  $("#form_fiche_client.description").val();
    c'est une méthode quelque peu BOURRIN parceque si un jour tu modifie "form_fiche_client" par autre chose tous tes jQuery seront pas bon
    alors attention

  15. #15
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 124
    Par défaut
    Merci pour tes infos précieuses.

    oui effectivement c'est un problème mais alors en moins bourrin comme tu dis faudrait il passer par un namespace intermédiaire qui ferait la liaison entre les 2 ?

    je me suis posé la même question à propos des namespace de mes controllers à savoir si je change le nom de mon bundle bah je suis aussi dans le même cas de figure.

    cordialement

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/06/2015, 14h32
  2. Réponses: 3
    Dernier message: 15/11/2006, 13h57
  3. Comment envoyer du texte dans une fenêtre spéciale ?
    Par Coussati dans le forum Composants VCL
    Réponses: 11
    Dernier message: 25/10/2005, 09h00
  4. Formulaire dans une fenêtre modale
    Par Amnesiak dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 28/02/2005, 14h25
  5. Supprimer la croix dans une fenêtre modale
    Par AnneOlga dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/01/2004, 14h52

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