Bonjour,
Quelqu'un saurait comment on peut passer du code actuel au code souhaité avec le Form Builder de Symfony 4 ?
Merci d'avance
# Modèle conceptuel
Client : Entity
- prenom : string
- nom : string
- rue : string
- npa : string // Code postal d'une région
- localite : string
# Symfony
$form = $this->createFormBuilder($client)
->add('rue', TextType::class)
->add('npa', TextType::class)
->add('localite', TextType::class)
->getForm();
# Modèle conceptuel
Client : Entity
- prenom : string
- nom : string
- rue : string
- domicile : Region // Clé étrangère de ma table Regions
Region : Entity
- npa : string // Code postal d'une région
- localite : string
# Symfony
$form = $this->createFormBuilder($client)
->add('rue', TextType::class)
->add('domicile.npa', TextType::class)
->add('domicile.localite', TextType::class)
->getForm();
Finalement trouvé dans la documentation officielle
# Symfony
use Doctrine\ORM\EntityRepository;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
// ...
$form = $this->createFormBuilder($client)
->add('rue', TextType::class)
->add('region', EntityType::class, [
'class' => Region::class,
'choice_label' => function ($region) { return $region->getNpa() . ' ' . $region->getLocalite(); },
'choice_value' => function ($entity = null) { return $entity ? $entity->getId() : ''; },
'query_builder' => function (EntityRepository $er) { return $er->createQueryBuilder('r')->orderBy('r.npa', 'ASC'); }
])
->getForm();
Prendre en compte le changement d'appel du champs dans Twig
# Twig
{{ form_widget(form_client.region) }}