Symfony6 Symfony7 Techwall #40 Les formulaires

Поделиться
HTML-код
  • Опубликовано: 4 окт 2024
  • Symfony6 Symfony7 Techwall #40 Les formulaires
    Les formulaires ont :
    Rôle très important dans le web
    Vitrine, interface entre les visiteurs du site web et le contenu du site
    Généralement traité en utilisant du html form
    Symfony et les formulaires : le composant Form
    Bibliothèque dédiée aux formulaires
    La philosophie de Symfony pour les formulaires est la suivante :
    Vision 1
    Un formulaire est l’image d’un objet existant
    Le formulaire sert à alimenter cet objet.
    Vision 2
    Un formulaire sert à récupérer des informations indépendantes de n’importe quel objet.
    La création du formulaire se fait de 2 façons différentes :
    1) Dans le contrôleur qui va utiliser le formulaire
    2) En externalisant la définition dans un fichier
    Afin de rendre les formulaires réutilisables, Symfony permet l’externalisation des formulaires en des objets.
    Convention de nommage : L’objet du formulaire doit être nommé comme suit NomObjetType
    Cet objet doit obligatoirement étendre la classe AbstractType
    Deux méthodes doivent obligatoirement être implémentées :
    buildForm(FormBuilderInterface $builder, array $options) qui est la méthode qui va permettre la création et la définition du formulaire
    Il y a aussi la méthode configureOptions qui permet de définir l’objet associé au formulaire. Cette fonction est obligatoire si vous voulez associer votre form à une classe.
    Maker permet aussi d’automatiquement générer la classe du formulaire
    php bin/console make:form FormNameType
    symfony console make:form FormNameType
    Exemple :
    php bin/console make:form PersonneType
    Maker vous demandera si votre formulaire est associé à une entité ou non. Répondez selon votre besoin.
    La récupération du formulaire au niveau des contrôleurs devient beaucoup plus facile :
    $form = $this-createForm(TacheType::class, $entity);
    Le second parameter n’est pas obligatoire
    Afin d’afficher le formulaire crée, il faut transmettre la vue de ce formulaire à la page Twig qui doit l’accueillir.
    La méthode createView de l’objet Form permet de créer cette vue
    Il ne reste plus qu’à l’envoyer à la page twig en question
    Exemple :
    $form= $this-createForm (ExempleType::class,$exemple) );
    return $this-render('Rt4AsBundle:Default:myform.html.twig', array(
    'form'=$form-createView()));
    Deux méthodes permettent d’afficher le formulaire dans Twig :
    1) Afficher directement la totalité du formulaire avec la méthode form
    {{ form(nomDuFormulaire) }}
    2) Afficher les composants du formulaire séparément un à un ( généralement lorsqu’on veut personnaliser les différents champs)

Комментарии • 12

  • @TheDowness
    @TheDowness 2 года назад +1

    Merci t'es vraiment le bro tu m'aides énormément thx m8 !!

  • @Kayoken_
    @Kayoken_ 2 года назад +1

    Vraiment très utile, merci énormément !

  • @TheSabrow
    @TheSabrow 2 года назад +2

    Merci !

  • @khalil4968
    @khalil4968 Год назад

    Bonjour, pourquoi on a implementer la methode to_string pour l'attribut designation alors qu'il est deja declarer comme string et non pas comme objet

    • @TechWall
      @TechWall  Год назад +1

      Non le toString c'est pour les classes en relations avec ta classe et dans le toString vous retourner ce que vous voulez voir dans le form

  • @tiseyat7793
    @tiseyat7793 Год назад

    il me dit variable form does not exist {{form(form)}} .. whats the problem ??

    • @TechWall
      @TechWall  Год назад

      Il faut vérifier que vous avez bien envoyé la variable en deuxième paramètre de votre méthode render et avec la clé form

  • @amaninyumu385
    @amaninyumu385 Год назад

    Salut !. J'ai récemment télécharger phpstorm. Mais ça me complique lors de la création automatique d'une page html.twig.
    La méthode qu'on a utilisé dans cette vidéo pour la création de la page add-personne.html.twig
    Merci

    • @amaninyumu385
      @amaninyumu385 Год назад +1

      J'ai trouvé la solution merci.

    • @TechWall
      @TechWall  Год назад

      @@amaninyumu385 Super. Bon travail