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 :

Formulaire non soumis [4.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut Formulaire non soumis
    Bonjour,

    J'ai un formulaire de création d'une annonce qui contient un sous-formulaire embarqué (véhicule) qui lui-même à plusieurs champs de type "entité".

    Mon problème est que le formulaire n'est pas soumis lorsqu'on appuie sur le bouton "Submit" et aucune erreur n'est affichée.

    Voici la fonction appelée dans le 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
        /**
         *  @Route("/road_trip/newAdvert", name="road_trip_createAdvert")
         *  @Route("/road_trip/{id}/editAdvert", name="road_trip_editAdvert")
         */
     
        public function advertForm(Advert $advert = null, Request $request, ObjectManager $manager){
     
            if (!$advert) {
                $advert = new Advert();
                $vehicle = new Vehicle();
     
                $vehicle->setAdvert($advert);
                $advert->setVehicle($vehicle);
            }
     
            $form = $this->createForm(AdvertType::class, $advert);
            $form->handleRequest($request);
     
            if ($form->isSubmitted()) {                          
                return new Response("La marque a été supprimée");
            }
     
            return $this->render('road_trip/createAdvert.html.twig', ['formAdvert' => $form->createView(), 'editMode' => $advert->getId() !== null]);        
        }
    Le formulaire de l'annonce :

    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
    <?php
     
    namespace App\Form;
     
    use App\Entity\Advert;
    use App\Form\VehicleType;
    //use App\Form\PhotoType;
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolver;
    use Symfony\Component\Form\Extension\Core\Type\TextareaType;
    use Symfony\Component\Form\Extension\Core\Type\CollectionType;
     
    class AdvertType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('description', TextareaType::class, array('data' => 'Veuillez donner une description du véhicule',))
                ->add('vehicle', VehicleType::class)
            ;
        }
     
        public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefaults([
                'data_class' => Advert::class,
            ]);
        }
    }
    Le sous-formulaire du véhicule :

    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
    <?php
     
    namespace App\Form;
     
    use App\Entity\Vehicle;
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Bridge\Doctrine\Form\Type\EntityType;
    use Symfony\Component\OptionsResolver\OptionsResolver;
    use Symfony\Component\Form\Extension\Core\Type\DateType;
    use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
     
    class VehicleType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('manufactureDate', DateType::class, array('widget' => 'single_text', 'html5' => false, 'attr' => ['class' => 'js-datepicker'],))        
                ->add('numberBeds', ChoiceType::class, array('choices'  => array('1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 5, '6' => 6, '7' => 7, '8' => 8, '9' => 9, '10' => 10), 'placeholder' => 'Veuillez choisir le nombre de couchages du véhicule'))
                ->add('sort', EntityType::class, array('class' => 'App\Entity\Sort', 'choice_label' => 'sort','placeholder' => 'Veuillez choisir un type de véhicule'))
                ->add('fuel', EntityType::class, array('class' => 'App\Entity\Fuel', 'choice_label' => 'fuel','placeholder' => 'Veuillez choisir le carburant du véhicule'))
                ->add('mark', EntityType::class, array('class' => 'App\Entity\Mark', 'choice_label' => 'mark','placeholder' => 'Veuillez choisir la marque du véhicule'))
            ;
        }
     
        public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefaults([
                'data_class' => Vehicle::class,
            ]);
        }
    }
    Et enfin, voici le template du formulaire de création de l'annonce :

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    {% extends "base.html.twig" %}
     
    {% form_theme formAdvert 'bootstrap_4_layout.html.twig' %}
     
    {% block stylesheets %} 
         {{ parent () }} 
         <link rel = "stylesheet" href = "//cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.0/css/bootstrap-datepicker.css"> 
     {% endblock %}
     
    {% block body %}
     
        {% if editMode %}
     
            <h1>Modification de votre annonce</h1>
     
        {% else %}
     
            <h1>Création de votre annonce</h1>
     
        {% endif %}
     
        {{ form_start(formAdvert) }}
        {{ form_errors(formAdvert) }}
     
        <div>
            {{ form_label(formAdvert.description, 'Description', {'label_attr': {'class': 'foo'}}) }}
            {{ form_errors(formAdvert.description) }}
            {{ form_widget(formAdvert.description) }}
     
            {{ form_label(formAdvert.vehicle.manufactureDate, 'Date de construction du véhicule', {'label_attr': {'class': 'foo'}}) }}
            {{ form_errors(formAdvert.vehicle.manufactureDate) }}
            {{ form_widget(formAdvert.vehicle.manufactureDate) }}
     
            {{ form_label(formAdvert.vehicle.mark, 'Marque', {'label_attr': {'class': 'foo'}}) }}
            {{ form_errors(formAdvert.vehicle.mark) }}
            {{ form_widget(formAdvert.vehicle.mark) }}
     
            {{ form_label(formAdvert.vehicle.fuel, 'Carburant', {'label_attr': {'class': 'foo'}}) }}
            {{ form_errors(formAdvert.vehicle.fuel) }}
            {{ form_widget(formAdvert.vehicle.fuel) }}
     
            {{ form_label(formAdvert.vehicle.sort, 'Type', {'label_attr': {'class': 'foo'}}) }}
            {{ form_errors(formAdvert.vehicle.sort) }}
            {{ form_widget(formAdvert.vehicle.sort) }}
     
            {{ form_label(formAdvert.vehicle.numberBeds, 'Nombre de couchages', {'label_attr': {'class': 'foo'}}) }}
            {{ form_errors(formAdvert.vehicle.numberBeds) }}
            {{ form_widget(formAdvert.vehicle.numberBeds) }}
        </div>
     
        {{ form_end(formAdvert) }}
     
        <button type="submit" class="btn btn-success">
     
            {% if editMode %}
     
                Enregistrer les modifications
     
            {% else %}
     
                Ajouter l'annonce
     
            {% endif %}
     
        </button>
     
        {% block javascripts %}
            {{ parent() }}
            {{ encore_entry_script_tags('createAdvert') }}
            <!-- <script src = "//cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.0/js/bootstrap-datepicker.min.js" ></script > -->
            <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
            <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.3.0/js/bootstrap-datepicker.js"></script>
        {% endblock %}
     
    {% endblock body %}
    Quelqu'un aurait une idée?

    Merci d'avance pour votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Bon, il a fallu que je poste ce message pour me rendre compte que j'avais mis le bouton "Submit" en-dehors de la balise <form>. Honte à moi

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

Discussions similaires

  1. [2.x] formulaire non soumis
    Par caius2 dans le forum Symfony
    Réponses: 0
    Dernier message: 23/06/2017, 14h53
  2. Réponses: 1
    Dernier message: 23/03/2014, 15h32
  3. [MySQL] formulaire non soumis avec FF-Safari/ Fonctionne avec IE-Chrome-Opera
    Par helenegu dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/02/2009, 18h32
  4. formulaire non soumis si fichier trop gros
    Par atom41 dans le forum Langage
    Réponses: 3
    Dernier message: 30/10/2008, 16h57
  5. Désactivation bouton = formulaire non soumis
    Par Gwipi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/05/2005, 16h11

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