Outils pour utilisateurs

Outils du site


symfony4:formulaires_formulaire_avec_classe

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
symfony4:formulaires_formulaire_avec_classe [2020/04/11 22:04]
marclebrun [Création de la classe de formulaire]
— (Version actuelle)
Ligne 1: Ligne 1:
-====== Formulaire défini dans une classe ====== 
- 
-===== Création de la classe de formulaire ===== 
- 
-<code bash> 
-php bin/console make:form 
-</​code>​ 
- 
-<​code>​ 
-The name of the form class : 
-> ArticleType 
-</​code>​ 
- 
-Donner à la classe un nom qui se termine par **Type** (par exemple **ArticleType** pour éditer 
-des entités de type **Article**). 
- 
-<​code>​ 
-The name of Entity or fully qualified model class name that the new form will be bound to (empty for none): 
-> App\Entity\Article 
-</​code>​ 
- 
-Donner le nom de l'​entité si le formulaire est lié à une entité, sinon laisser vide. 
- 
-<code php ArticleType.php>​ 
-use Symfony\Component\Form\Extension\Core\Type\TextType;​ 
-use Symfony\Component\Form\Extension\Core\Type\TextareaType;​ 
- 
-class ArticleType extends AbstractType 
-{ 
-    public function buildForm(FormBuilderInterface $builder, array $options) 
-    { 
-        $builder 
-            ->​add('​denom',​ TextType::​class,​ [ 
-                '​label'​ => "​Dénomination de l'​article",​ 
-            ]) 
-            ->​add('​desc',​ TextareaType::​class,​ [ 
-                '​label'​ => "​Descriptif",​ 
-            ]) 
-            ->​add('​couleur',​ TextType::​class) 
-            // ... 
-            // ... 
-            ->​add('​save',​ SubmitType::​class,​ [ 
-                '​label'​ => "​Enregistrer"​ 
-            ]) 
-        ; 
-    } 
- 
-    public function configureOptions(OptionsResolver $resolver) 
-    { 
-        $resolver->​setDefaults([ 
-            '​data_class'​ => Article::​class,​ 
-        ]); 
-    } 
-} 
-</​code>​ 
- 
-===== Utilisation dans un contrôleur ===== 
- 
-Utiliser la méthode **createForm** du contrôleur : 
- 
-<code php ArticleController.php>​ 
-class ArticleController extends AbstractController 
-{ 
-    public function new() 
-    { 
-        $article = new Article(); 
-        ​ 
-        // ... 
- 
-        $form = $this->​createForm(ArticleType::​class,​ $article); 
- 
-        return $this->​render('​article/​edit.html.twig',​ [ 
-            '​form'​ => $form->​createView(),​ 
-        ]); 
-    } 
-} 
-</​code>​ 
- 
-L'​ajout d'​options permet de redéfinir l'​action et la méthode : 
- 
-<code php ArticleController.php>​ 
-        // ... 
-        ​ 
-        $form = $this->​createForm(ArticleType::​class,​ $article, [ 
-            '​action'​ => $this->​generateUrl('​target_route'​),​ 
-            '​method'​ => '​GET'​ 
-        ]); 
-        ​ 
-        // ... 
-</​code>​ 
- 
-===== Intégration dans un template ===== 
- 
-Forme simple sans aucun contrôle sur le rendu : 
- 
-<code twig templates/​article/​edit.html.twig>​ 
-{{ form(form) }} 
-</​code>​ 
- 
-Avec un bouton inséré à la fin: 
- 
-<code twig templates/​article/​edit.html.twig>​ 
-{{ form_start(form) }} 
-{{ form_widget(form) }} 
-<button type="​submit"​ class="​btn btn-primary">​Enregistrer</​button>​ 
-{{ form_end(form) }} 
-</​code>​ 
- 
-En spécifiant chaque champ (permet d'​appliquer des options à chacun): 
- 
-<code twig templates/​article/​edit.html.twig>​ 
-{{ form_start(form) }} 
-{{ form_widget(form.denom) }} 
-{{ form_widget(form.desc) }} 
-{{ form_widget(form.couleur) }} 
-<button type="​submit"​ class="​btn btn-primary">​Enregistrer</​button>​ 
-{{ form_end(form) }} 
-</​code>​ 
  
symfony4/formulaires_formulaire_avec_classe.1586642659.txt.gz · Dernière modification: 2020/04/11 22:04 (modification externe)