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 :

[symfony] formulaires imbriqués


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2017
    Messages : 23
    Par défaut [symfony] formulaires imbriqués
    Bonjour,

    voila je dois faire un formulaire imbriqué avec 4 Entité ( City, Post, Employer et Temp ) que je dois stocker en BDD voila a quoi il ressemble:
    Nom : formulaire.PNG
Affichages : 551
Taille : 8,5 Ko

    City, Post, Employer sont des EntityType et temps juste un Texte type.

    Mais voila quand je clique sur valider je recoi un message d'erreur du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    An exception occurred while executing 'INSERT INTO city (City) VALUES (?)' with params [null]:
     
    SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'City' cannot be null
    mon probleme je crois est que mes Entity sont pas relier par des relation ( oneToOne etc...) .

    je sais pas comment my prendre a ce sujet, pourriez vous m'aidé s'il vous plait? je suis vraiment pas doué a ce sujet pourtant il parait que c'est assez simple.

    controller :
    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
    33
    34
    35
    36
    37
    38
    public function indexAction(Request $request){
     
            $employer = new Employer();
            $formEmployer = $this->get('form.factory')->create(EmployerType::class, $employer);
     
            $poste = new Poste();
            $formPoste = $this->get('form.factory')->create(PosteType::class, $poste );
     
            $city = new City();
            $formCity = $this->get('form.factory')->create(CityType::class, $city);
     
            $temps = new Temps();
            $formTemps = $this->get('form.factory')->create(TempsType::class, $temps);
     
     
     
            //Acces au service Doctrine
            $doctrine = $this->container->get('doctrine');
            $em = $doctrine->getManager();
     
            if ($formCity && $formEmployer && $formPoste && $formTemps->handleRequest($request)->isValid()) {
                $em = $this->getDoctrine()->getManager();
                $em->persist($city, $poste, $employer , $temps);
                $em->flush();
            }
     
     
            return $this->render('stat/projectSheet.html.twig', array(
     
                'employer' => $formEmployer->createView(),
                'city' => $formCity->createView(),
                'poste' => $formPoste->createView(),
                'temp' => $formTemps->createView(),
     
     
            ));
     
        }
    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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     {{ form_start(city) }}
                                        {{ form_start(poste) }}
                                        {{ form_start(employer) }}
                                        <table class="table table-bordered table-striped table-condensed">
                                            <thead>
                                            <tr>
                                                <th>Name</th>
                                                <th>Temps</th>
                                                <th>Poste</th>
                                                <th>Ville</th>
                                                <th> Edit</th>
                                            </tr>
                                            <tr>
                                                <th>{{ form_widget(employer) }}</th>
                                                <th>{{ form_widget(temp) }}</th>
                                                <th> {{ form_widget(poste) }}</th>
                                                <th>{{ form_widget(city) }}</th>
                                            </tr>
                                            </thead>
                                            <tbody>
                                        </table>
                                        <input type="submit" value="valider"/>
                                        {{ form_end(employer) }}
                                        {{ form_end(poste) }}
                                        {{ form_end(city) }}
    merci .

  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
    déjà, vérifie si dans le corps de la requête POST(au submit du formulaire) la ville est bien insérée !

    ensuite je constate que le handleRequest s'applique seulement à formTemps mais pas aux autres, pourquoi ?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2017
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2017
    Messages : 23
    Par défaut
    bonjour, oui l'handleResquest s'applique a chaque form jai ecris de cette facon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $formCity && $formEmployer && $formPoste && $formTemps->handleRequest($request)->isValid())

Discussions similaires

  1. [2.x] [Symfony 2.6] Persister des formulaires imbriqués
    Par Kevfou dans le forum Symfony
    Réponses: 27
    Dernier message: 18/05/2015, 21h07
  2. [1.x] [symfony 1.4.x][propel] Formulaires imbriqués
    Par Djillian dans le forum Symfony
    Réponses: 5
    Dernier message: 04/04/2011, 16h55
  3. [1.x] formulaire imbriqués symfony version 1.1.6
    Par bellilo dans le forum Symfony
    Réponses: 2
    Dernier message: 30/03/2009, 02h36
  4. formulaires imbriqués
    Par Nounoursonne dans le forum Langage
    Réponses: 34
    Dernier message: 18/11/2005, 14h18
  5. probleme deux formulaires imbriqués
    Par rony dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/06/2005, 18h19

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