TD6-5: Formulaires

Maintenant que nous avons sécurisé l'espace admin, nous allons créer un formulaire d'ajout de pizzas.

Lecture recommandée: la documentation officielle de Symfony.com sur les formulaires

Création du formulaire

Pour créer un formulaire: lancez:

symfony console make:form

Ce qui générera une classe du type:

// Forms/PizzaType.php
namespace App\Forms;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class PizzaType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name')
            ->add('price')
            ->add('description')
            ->add('ingredients')
            ;
    }

    public function getName()
    {
        return 'pizza_form';
    }
    
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => 'App\Entity\Pizza',
        ]);
    }

}

Ici, nous décrivons un type de formulaire qui correspond à la classe de l'entité Pizza de notre bundle.

Nous ajoutons alors nos champs, notez que nous ne précisons nullement leur type, il sera deviné par Symfony.

A l'aide de la documentation officielle et de cette classe, créez un formulaire servant à créer une pizza dans l'espace administrateur.

Lorsque le formulaire est soumis et valide, insérez alors la Pizza ainsi créée dans la base de données à l'aide de Doctrine.

Questions

Labels

Remarquez que les labels sont mis en place par défaut par Symfony en utilisant le nom du champ concerné (qui est anglais ici). A l'aide de la documentation, modifiez les.

Champ supplémentaire

Une champ caché en plus apparaîtra dans votre formulaire "...token", de quoi s'agit t-il?

Stylisation

Notez que les champs ne sont pas stylisés par notre feuille de style, pour cela, vous pouvez utiliser depuis Symfony 2.6 le thème bootstrap pour les formulaires. Activez-le dans votre application.