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

 PHP Discussion :

Le formulaire n'apparaît pas


Sujet :

PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Points : 82
    Points
    82
    Par défaut Le formulaire n'apparaît pas
    Bonjour,

    Je suis la documentation officielle sur les forms et l'exemple n'apparaît à l'écran, je ne comprends pas.
    Voilà mon code:

    Entity/Task.php

    Code php : 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
    <?php
     
    namespace App\Entity;
     
    class Task
    {
        protected $task;
        protected $dueDate;
     
        public function getTask()
        {
            return $this->task;
        }
     
        public function setTask(string $task)
        {
            $this->task = $task;
        }
     
        public function getDueDate()
        {
            return $this->dueDate;
        }
     
        public function setDueDate(\DateTime $dueDate = null)
        {
            $this->dueDate = $dueDate;
        }
    }

    Form/TaskType.php

    Code php : 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\Task;
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\Extension\Core\Type\DateType;
    use Symfony\Component\Form\Extension\Core\Type\SubmitType;
    use Symfony\Component\Form\Extension\Core\Type\TextType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolver;
     
    class TaskType extends AbstractType
    {
        public function buidForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('task', TextType::class)
                ->add('dueDate', DateType::class)
                ->add('save', SubmitType::class)
            ;
        }
     
        public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefaults([
                'data_class' => Task::class,
            ]);
        }
    }

    Controller/TaskController.php


    Code php : 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
    <?php
     
    namespace App\Controller;
     
    use App\Entity\Task;
    use App\Form\TaskType;
    use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\Routing\Annotation\Route;
     
    class TaskController extends AbstractController
    {
        /**
         * @Route("/new", name="app_new")
         */
        public function new(Request $request)
        {
            $task = new Task();
            $task->setTask('Write a blog post');
            $task->setDueDate(new \DateTime('tomorrow'));
     
            $form = $this->createForm(TaskType::class, $task);
     
            $form->handleRequest($request);
            if ($form->isSubmitted() && $form->isValid()) {
                $task = $form->getData();
     
                $entityManager = $this->getDoctrine()->getManager();
                $entityManager->persist($task);
                $entityManager->flush();
     
                return $this->redirectToRoute('task_success');
            }
     
            return $this->render('task/new.html.twig', [
                'form' => $form->createView(),
            ]);
        }
    }

    template/task/new.html.twig


    Du coup, lorsque je me rend sur http://127.0.0.1:8000/new, il n'y rien qui n'apparaît. Et avec la console développeur, je vois cela:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form name="task" method="post">
    <div id="task"><input type="hidden" id="task__token" name="task[_token]" value="LwxCbkYwIPQWpZDX6j_vC3G3TBqnFh0kbd6WczNJQ5c"></div>
    </form>

    Peut être que cela peut m'indiquer pourquoi je ne le vois pas.

    Merci par avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Salut,

    J'ai une moitié de réponse : tu ne le vois pas car il est vide, le seul champ contenu dans le HTML est le champ caché qui contient le token CSRF ajouté automatiquement par Symfony.
    Par contre pourquoi tes deux champs n'apparaissent pas... aucune idée pour l'instant désolé.

    Si tu dump $form et $form->createView() dans le contrôleur ça te donne quoi ? Est-ce que tu vois tes champs dedans ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Points : 82
    Points
    82
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dump($form);
    die();
    me donne:

    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^ {#513 ▼
      -config: FormBuilder^ {#493 ▶}
      -parent: null
      -children: OrderedHashMap^ {#492 ▼
        -elements: []
        -orderedKeys: []
        -managedCursors: []
      }
      -errors: []
      -submitted: false
      -clickedButton: null
      -modelData: Task^ {#389 ▼
        #task: "Write a blog post"
        #dueDate: DateTime @1570838400 {#393 ▶}
      }
      -normData: Task^ {#389 ▶}
      -viewData: Task^ {#389 ▶}
      -extraData: []
      -transformationFailure: null
      -defaultDataSet: true
      -lockSetData: false
      -name: "task"
      -inheritData: false
      -propertyPath: null
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dump($form->createView());
    die();
    me donne:

    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
     
    FormView^ {#616 ▼
      +vars: array:31 ["value" => Task^ {#549 ▼
          #task: "Write a blog post"
          #dueDate: DateTime @1570838400 {#553 ▶}
        }
        "attr" => []
        "form" => FormView^ {#616}
        "id" => "task"
        "name" => "task"
        "full_name" => "task"
        "disabled" => false
        "label" => null
        "label_format" => null
        "multipart" => false
        "block_prefixes" => array:3 []
        "unique_block_prefix" => "_task"
        "row_attr" => []
        "translation_domain" => null
        "label_translation_parameters" => []
        "attr_translation_parameters" => []
        "cache_key" => "_task_task"
        "errors" => FormErrorIterator^ {#632 ▶}
        "valid" => true
        "data" => Task^ {#549 ▶}
        "required" => true
        "size" => null
        "label_attr" => []
        "help" => null
        "help_attr" => []
        "help_html" => false
        "help_translation_parameters" => []
        "compound" => true
        "method" => "POST"
        "action" => ""
        "submitted" => false
      ]
      +parent: null
      +children: array:1 ["_token" => FormView^ {#603 ▶}
      ]
      -rendered: false
      -methodRendered: false
    }
    Pour le dump($form);, on voit dans modelData que les deux champs sont présents.
    Par contre, pour le dump($form->createView());, je remarque que pour le children il n'y a que le token. Le problème provient probablement de la méthode createView().

Discussions similaires

  1. [DOM] Formulaire n'apparaît pas
    Par riete dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 28/10/2008, 14h51
  2. [Applet] qui n'apparaît pas.
    Par Vesperal dans le forum Applets
    Réponses: 2
    Dernier message: 09/06/2006, 16h28
  3. Enregistrer sous-formulaire meme si pas rempli
    Par mat75019 dans le forum Access
    Réponses: 3
    Dernier message: 22/04/2006, 08h32
  4. L'icône "retirer le périphérique.." n'apparaît pas
    Par al1_24 dans le forum Ordinateurs
    Réponses: 8
    Dernier message: 30/03/2006, 23h58
  5. Réponses: 5
    Dernier message: 12/12/2005, 08h52

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