Bonjour,
Je continue ma petite formation symfony 2 et je m'essaie sur les formulaires aujourd'hui. En l’occurrence, je crée un formulaire ne contenant qu'un seul champ texte qui doit être renseigné. En suivant la doc officielle, j'arrive aux codes suivants :
L'entité :
L'action :
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 namespace ***\***\Entity; use Doctrine\ORM\Mapping as ORM; use Gedmo\Mapping\Annotation as Gedmo; use Symfony\Component\Validator\Constraints as Assert; /** * @ORM\Entity * @ORM\Table(name="gbot_domaine") */ class Domaine { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @Assert\NotBlank(message="L'intitulé doit être renseigné") * @ORM\Column(type="string", length=255, nullable=false) */ protected $intitule; (...)
La portion du template concernant le formulaire :
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 /** * @Route("/domaine/new", name="_domaine_new") * @Template */ public function newAction(Request $request) { $form = $this->createFormBuilder() ->add('intitule', 'text', array( 'label' => 'Intitulé' )) ->getForm(); if ( $request->getMethod() == 'POST' ) { $form->bindRequest($request); if ($form->isValid()) { return $this->redirect( $this->generateUrl('_domaine_index')); } } return array('form'=>$form->createView()); }
Le problème, c'est que l'action valide le domaine même si je n'ai pas renseigné le champ intitulé...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <form action="{{ path('_domaine_new') }}" method="post" novalidate="novalidate" {{ form_enctype(form) }}> {% include "***:Admin:batchActions.html.twig" with { 'cancelRoute': '_domaine_index', 'submitLabel': 'Enregistrer' } %} {{ form_widget(form) }} </form>
Aurais-je oublié quelque chose ou fait quelque chose de travers ?
Merci d'avance pour votre aide !
Partager