« Programmation PHP avec Symfony/Formulaire » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 19 :
== Contrôleur ==
=== Injection du formulaire dans un Twig ===
<sourcesyntaxhighlight lang=php>
class HelloWorldController extends AbstractController
{
Ligne 36 :
}
}
</syntaxhighlight>
</source>
 
Le second paramètre de createForm() est facultatif est sert à préciser des valeurs initiales dans le formulaire qui seront injectées en [[../Twig/]], mais elles peuvent aussi l'être via le fichier du formulaire dans les paramètres de chaque champ.
Ligne 42 :
=== Traitement post-validation ===
Dans la même méthode du contrôleur qui injecte le formulaire, il faut prévoir le traitement post-validation :
<sourcesyntaxhighlight lang=php>
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
Ligne 48 :
// ...
}
</syntaxhighlight>
</source>
 
== Fichier du formulaire ==
Ligne 57 :
 
Exemple :
<sourcesyntaxhighlight lang=php>
public function buildForm(FormBuilderInterface $builder, array $options)
{
Ligne 65 :
]);
}
</syntaxhighlight>
</source>
 
Pour préremplir des valeurs dans les champs :
<sourcesyntaxhighlight lang=php>
$form->get('email')->setData($user->getEmail());
</syntaxhighlight>
</source>
 
=== EntityType ===
Ligne 90 :
 
Exemple :
<sourcesyntaxhighlight lang=php>
$builder->add('gender', EntityType::class, ['expanded' => true, 'multiple' => false]);
</syntaxhighlight>
</source>
 
==== Contrôle ====
Le validateur de formulaire d'entité peut utiliser les annotations des entités. Ex :
 
<sourcesyntaxhighlight lang=php>
use Symfony\Component\Validator\Constraints as Assert;
...
@Assert\NotBlank
</syntaxhighlight>
</source>
 
Sinon il permet aussi des contrôles plus personnalisés dans les types (qui étendent Symfony\Component\Form\AbstractType). Ex :
 
<sourcesyntaxhighlight lang=php>
'constraints' => [
new Assert\NotBlank(),
new Assert\Callback([ProductChecker::class, 'check']),
],
</syntaxhighlight>
</source>
 
Plusieurs types de données sont déjà définis, comme l'email ou l'URL<ref>https://symfony.com/doc/current/validation.html#string-constraints</ref>. Ex :
<sourcesyntaxhighlight lang=php>
@Assert\Email()
</syntaxhighlight>
</source>
 
== Appel du formulaire Symfony dans la vue ==
Ligne 126 :
 
Pour afficher tout le formulaire, dans l'ordre où les champs ont été définis en PHP :
<sourcesyntaxhighlight lang=twig>
{{ form_start(form) }}
{{ form_end(form) }}
</syntaxhighlight>
</source>
 
Pour n'afficher qu'un seul champ :
<sourcesyntaxhighlight lang=twig>
{{ form_widget(form.choosen_credit_card) }}
</syntaxhighlight>
</source>
 
Les même attributs qu'en PHP peuvent être définis en paramètre. Ex :
<sourcesyntaxhighlight lang=twig>
{{ form_widget(form.name, {'attr': {'class': 'address', 'placeholder': 'Entrer une adresse'} }) }}
{{ form_label(form.name, null, {'label_attr': {'class': 'address'}}) }}
</syntaxhighlight>
</source>
 
Exemple complet :
<sourcesyntaxhighlight lang="twig">
{{ form_start(form) }}
{{ form_errors(form) }}
Ligne 155 :
{{ form_row(form.submit, { 'label': 'Submit me' }) }}
{{ form_end(form) }}
</syntaxhighlight>
</source>
 
== Références ==