Académique Documents
Professionnel Documents
Culture Documents
#symfony-
forms
Table des matières
À propos 1
Remarques 2
Examples 2
Installation ou configuration 2
Remarques 3
Examples 3
événement onPostSubmit 3
FormEvents :: PRE_SUBMIT 4
FormEvents :: PRE_SET_DATA 5
Chapitre 3: Formes 8
Syntaxe 8
Remarques 8
Examples 8
Crédits 13
À propos
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version
from: symfony-forms
It is an unofficial and free symfony-forms ebook created for educational purposes. All the content
is extracted from Stack Overflow Documentation, which is written by many hardworking individuals
at Stack Overflow. It is neither affiliated with Stack Overflow nor official symfony-forms.
The content is released under Creative Commons BY-SA, and the list of contributors to each
chapter are provided in the credits section at the end of this book. Images may be copyright of
their respective owners unless otherwise specified. All trademarks and registered trademarks are
the property of their respective company owners.
Use the content presented in this book at your own risk; it is not guaranteed to be correct nor
accurate, please send your feedback and corrections to info@zzzprojects.com
https://riptutorial.com/fr/home 1
Chapitre 1: Démarrer avec symfony-forms
Remarques
Cette section fournit une vue d'ensemble de ce qu'est symfony-forms et pourquoi un développeur
peut vouloir l'utiliser.
Il convient également de mentionner tous les grands sujets dans les formulaires symfony, et de
les relier aux sujets connexes. La documentation de symfony-forms étant nouvelle, vous devrez
peut-être créer des versions initiales de ces rubriques connexes.
Examples
Installation ou configuration
https://riptutorial.com/fr/home 2
Chapitre 2: Exemple d'événements de
formulaire Symfony
Remarques
Accrochez-vous pour les événements de formulaire plus symfony dans l'exemple ci-dessus.
Examples
événement onPostSubmit
Ceci est une éducation de dans Symfony pour prendre les détails de la formation des utilisateurs.
Nous voulions appliquer la validation sur 2 champs, la date de fin des études et étudions
actuellement.
/**
* Class QualificationFormType
* @package UsersBundle\Form\Type
*/
class QualificationFormType extends AbstractType
{
$builder
->add('title')
->add('institution')
->add('startDate', 'date', [
'label' => 'Start Date',
'widget' => 'single_text',
'format' => 'dd-MM-yyyy',
'required' => true,
'constraints' => [
new Assert\NotBlank(),
new Assert\LessThan("today"),
],
'trim' => true,
'attr' => [
'maxlength' => '12',
'minlength' => '10',
https://riptutorial.com/fr/home 3
'placeholder' => 'when did you start this education?',
'class' => 'form-control input-inline datepicker datePicker',
'data-provide' => 'datepicker',
'data-date-format' => 'dd-mm-yyyy',
'minViewMode' => '1'
],
'label_attr' => [
'class' => 'control-label',
],
])
->add('endDate', 'date', [
'label' => 'End Date',
'widget' => 'single_text',
'format' => 'dd-MM-yyyy',
'required' => false,
'attr' => [
'placeholder' => 'when did you end this education?',
'class' => 'form-control input-inline datepicker datePicker',
'data-provide' => 'datepicker',
'data-date-format' => 'dd-mm-yyyy',
'minViewMode' => '1'
],
'label_attr' => [
'class' => 'control-label',
],
])
->add('current', null, [
'label' => ucfirst('I am currently studying'),
'label_attr' => [
'class' => 'control-label',
],
])
->add('save', 'submit')
FormEvents :: PRE_SUBMIT
https://riptutorial.com/fr/home 4
Dans mon cas particulier, je devais désactiver une boîte de sélection si une case à cocher n'était
pas définie.
Nous avons donc le FormBuilder, où nous allons définir EventListener sur l' FormEvents::PRE_SUBMIT
. Nous utilisons cet événement, car le formulaire est déjà défini avec les données soumises du
formulaire, mais nous sommes toujours en mesure de manipuler le formulaire.
// get the form data, that got submitted by the user with this request / event
$data = $event->getData();
// overwrite the choice field with the options, you want to set
// in this case, we'll disable the field, if the hidden field isn't set
$form->add(
'choiceField',
$config->getType()->getName(),
array_replace(
$options, array(
'disabled' => ($data['hiddenField'] == 0 ? true : false)
)
)
);
})
;
}
}
FormEvents :: PRE_SET_DATA
La condition est de vérifier si dans un formulaire, le champ 'Online_date' est vide ou rempli. S'il est
vide, remplissez-le avec la date du jour, sur le chargement du formulaire.
https://riptutorial.com/fr/home 5
Le contrôleur appelle "$ form-> createForm ()" avec le type "folder". Dans «FolderType», l'abonné
à l'événement «FolderSubscriber» est ajouté.
Contrôleur :
FolderType :
https://riptutorial.com/fr/home 6
Lire Exemple d'événements de formulaire Symfony en ligne: https://riptutorial.com/fr/symfony-
forms/topic/5039/exemple-d-evenements-de-formulaire-symfony
https://riptutorial.com/fr/home 7
Chapitre 3: Formes
Syntaxe
• Form createForm (string | FormTypeInterface $ type, mixed $ data = null, tableau $ options =
array ())
• FormBuilder createFormBuilder (mixte $ data = null, array $ options = array ())
Remarques
Vous pouvez "personnaliser" l'événement du processus du composant Form avec un événement
de formulaire compatible avec Event Dispatcher Component.
Docs Symfony :
Examples
Créer un formulaire simple dans un contrôleur
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
// ...
$form->handleRequest($request);
https://riptutorial.com/fr/home 8
if ($form->isValid()) {
Dans votre modèle, restituez votre formulaire en utilisant la form(...) Fonction Twig:
Les étiquettes, identifiants, noms et balises de formulaire sont générés automatiquement. Par
défaut, le formulaire est soumis à la page en cours avec une requête POST.
Un type de formulaire personnalisé est une classe qui définit un composant de formulaire
réutilisable. Les composants de formulaire personnalisés peuvent être imbriqués pour créer des
formulaires compliqués.
Au lieu de créer un formulaire dans le contrôleur à l'aide d'un générateur de formulaires, vous
pouvez utiliser votre propre type pour rendre le code plus lisible, réutilisable et maintenable.
// src/AppBundle/Form/ExampleType.php
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
https://riptutorial.com/fr/home 9
->add('string', TextType::class)
->add('save', SubmitType::class)
;
}
}
use AppBundle\Form\ExampleType;
// ...
Lors du rendu d'une forme "à la main", il peut être utile de savoir s'il reste des champs à rendre ou
non. La fonction isRendered() de la classe FormView renvoie true s'il reste des champs à restituer
dans le modèle.
Cet extrait imprime <h3>Extra fields</h3> s'il reste des champs à ajouter au modèle, suivis des
champs eux-mêmes.
{% if not form.isRendered() %}
<h3>Extra fields</h3>
{{ form_rest(form) }}
{% endif %}
Dans cet exemple, j'ai créé un formulaire qui sert à enregistrer un nouvel utilisateur. Dans les
options transmises au formulaire, je donne les différents rôles qu'un utilisateur peut avoir.
Créer une classe réutilisable pour mon formulaire avec la classe de données configurée et une
option supplémentaire qui remplit le champ de choix pour choisir un userrole:
https://riptutorial.com/fr/home 10
))
->add('plain_password', RepeatedType::class, array(
'type' => PasswordType::class,
'first_options' => array('label' => 'Password'),
'second_options' => array('label' => 'Repeat password')
))
->add('submit', SubmitType::class, array(
'label' => 'Register user'
));
}
Comme vous pouvez le voir, une option par défaut est ajoutée à la fiche nommée 'roleChoises'.
Cette option est créée et transmise dans la méthode pour créer un objet de formulaire. Voir le
code suivant.
Pour pouvoir traiter les événements de formulaire, il est important d'attacher la demande, qui est
envoyée à une action de contrôleur après avoir soumis un formulaire, au formulaire créé dans
cette action.
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()){
// do something with form data
return $this->redirectToRoute('route_name');
}
return $this->render('view.html.twig', array(
'form' => $form->createView()
));
}
https://riptutorial.com/fr/home 11
La variable de requête transmise à l'action est de type Symfony\Component\HttpFoundation\Request
https://riptutorial.com/fr/home 12
Crédits
S.
Chapitres Contributeurs
No
Démarrer avec
1 Community
symfony-forms
Exemple
2 d'événements de Ajay Bisht, jkucharovic, KhorneHoly, Muhammad Taqi
formulaire Symfony
https://riptutorial.com/fr/home 13