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 :

[Form] Imbrication de plusieurs formulaires et mélange du prototype [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 321
    Par défaut [Form] Imbrication de plusieurs formulaires et mélange du prototype
    Salut à tous,

    Je continue mon apprentissage de Symfony et je me heurte aujourd'hui à un problème d'imbrication de plusieurs formulaires dans un principal.

    Mon entité principal contient deux attributs "Collection" : $activites et $visiters

    Mon formulaire de base est comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    class IndivType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)    {
     
            $builder
                ->add('nom', 'text', array('label'=>'Nom : ', 'required'	=>	true))
                ->add('prenom' , 'text', array('label'=>'Prénom : ', 'required' => true)
                ->add('date_Arr' , 'date', array('widget' => 'single_text',
                				'required'	=>	false,
                				'format'	=> 'dd/MM/yyyy',
                                            'data_timezone' => "Europe/Paris",
                                            'user_timezone' => "Europe/Paris",
    					'label'	=> 'Date d\'arrivée : ',
    					'attr'	=>	array('placeholder'=>"jj/mm/aaaa")
                                                 )
                	)
    ..../....
       ->add('visiters', 'collection', array('type'	=>	new VisiterType(),
                					'allow_add' 	=> true ,
                					'prototype' 	=> true ,
                					'allow_delete' 	=> true ,
                					'by_reference' 	=> false ,
                					'required'		=> false
                										)
                		)
     
                ->add('activites' , 'collection', array('type' => new ActiviteType() ,
                					'allow_add' => true ,
    						'prototype' => true ,
    						'allow_delete' => true ,
    						'by_reference' => false ,
    						'required'=> false));

    Dans le index.html.twig, j'ai installé un système à onglet avec Jquery pour y intégré les sous-formaires.

    Grace à Arnooo999, et à "Pizza", l'insertion du premier formulaire est impec. Je peux aisément rajouter des lignes et en supprimer.
    Lorsque j'insère le second cela se passe bien aussi. Mais lorsque je veux insérer une ligne dans l'un des deux, il y a mélange dans d'insertion.

    Mes deux fichiers javascritp sont égaux mis à part les noms de variables et les balises :

    visiter.js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    $(document).ready(function(){
     
    	    var ajout = function() {
            var index = $('#tabVisit tbody tr').length;
            var rowVisit = $('script[type="text/html"]').text().replace(/__name__/g, index);
     
           $('#tabVisit tbody').append(rowVisit);
        };
    $('#tabVisit thead a').click(function(event){
    		if ($(this).text() === "Ajouter un pays") {
          	  ajout();
       		 }
        event.preventDefault();
    	});
    et
    activites.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $(document).ready(function(){
     
    	    var add = function() {
            var index = $('#tabAct tbody tr').length;
            var row = $('script[type="text/html"]').text().replace(/__name__/g, index);
     
           $('#tabAct tbody').append(row);
        };$('#tabAct thead a').click(function(event){
    		if ($(this).text() === "Ajouter une activité") {
          	  add();
       		 }
        event.preventDefault();
    	});
    Après avoir regardé un peu partout, j'ai essayé de faire apparaitre les deux "data-prototype". Ils sont là avec des valeurs différentes.
    Malheureusement, lorsque j'essaie d'insérer un nouvelle ligne dans l'un des deux sous-formulaire, j'obtiens deux lignes :
    - une pour le sous formulaire activites
    - une pour le sous formulaire visiter

    Y 'a-t-il un moyen pour différencier efficacement les deux insertions ?

    Si vous avez une idée, je suis preneur.

    Bonne journée

  2. #2
    Membre éclairé Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 321
    Par défaut
    Je me réponds à moi même puisque je viens de découvrir la solution :

    Et cette grande découverte, c'est que je suis une grosse truffe

    Dans le fichier Twig, j'ai rajouté une class à la balise script du prototype :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script class ="protoVisit" type="text/html">{{ _self.prototypebis(form.visiters.get('prototype')) }}</script>
    du coup dans le code du js, je l'appelle via le nom de sa class :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var rowVisit = $('.protoVisit').text().replace(/__name__/g, index);
    Idem pour l'autre

    Purée, pourquoi les réponses les plus simples me prennent toujours plus de temps..????

  3. #3
    Membre émérite
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Par défaut
    Bonjour,

    ça va aussi en aider d'autres je pense.

    Merci de mettre le sujet en

  4. #4
    Membre éclairé Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 321
    Par défaut
    Salut stephan.78

    j'attendais de voir si tout fonctionne bien. A priori oui maintenant, mais j'ai une super erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Maximum function nesting level of '100' reached, aborting! in.......
    En causant à notre ami Google, je me suis aperçu que cela pouvait se régler en vidant le cache.
    Le probleme c'est que doctrine me renvoit à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    php app/console cache:clear
     
    ErrorException
    warning: rename(c:\..............): accès refusé ?
    Ca veut dire quoi.

    Sinon j'ai rajouté
    xdebug.max_nesting_level=200 à mon php.ini

  5. #5
    Membre éclairé Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 321
    Par défaut
    J'ai vidé le cache en supprimant, à la mano, purement et simplement le répertoire app/cache.

    Mais j'ai toujours l'erreur :
    Maximum function nesting level of '300' reached, aborting!.
    Je l'ai donc monté à 500 mais rien y fait. Je ne vais pas aller jusqu'120000000 non?

  6. #6
    Membre émérite
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Par défaut
    ça s'est un question de droit sur le système de fichier ou est le cache.

    Tu peux aussi supprimer à la mano, le répertoire cache/dev et cache/prod

  7. #7
    Membre éclairé Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 321
    Par défaut
    Je suis arrivé à mettre dans le php.ini :

    xdebug.max_nesting_level = 1500

    mais du coup maintenant, j'ai une page blanche et mon appli ne s'execute pas.

    Une idée ?

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

Discussions similaires

  1. [2.x] [Form] Validation de plusieurs formulaire d'un coup
    Par Ducky93 dans le forum Symfony
    Réponses: 8
    Dernier message: 28/08/2012, 11h39
  2. Envoyer les données de plusieurs forms avec un autre formulaire
    Par malgache dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 19/10/2011, 17h15
  3. Réponses: 7
    Dernier message: 09/11/2010, 22h35
  4. [MVC Form] Plusieurs formulaires dans la même vue
    Par guste dans le forum ASP.NET MVC
    Réponses: 2
    Dernier message: 10/06/2010, 12h17
  5. Intégrer plusieurs Form dans un seul formulaire
    Par Sakuragi007 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 10/07/2007, 17h00

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