Bonjour,
J'ai un constructeur de formulaire pour ajouter / éditer des articles de magasin et je souhaiterais pouvoir définir de quel fournisseur ils proviennent.
Pour ce faire j'ai un ChoiceType que je rempli en passant en paramètre l'ensemble des fournisseurs depuis mon ArticleControlleur.
Mon problème maintenant consiste à changer le label de ce ChoiceType pour qu'il corresponde aux fournisseurs et non aux articles.
Une idée? Je suis sur Symfony 3, mais si vous avez une solution adaptée à Symfony 2, je suis preneur. Merci
// AppBundle\Form\ArticleType
class ArticleType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('libelle', TextType::class)
->add('quantite', TextType::class, ['label' => 'Quantité'])
->add('prix', TextType::class)
->add('description', TextType::class)
->add('image', TextType::class)
->add('fournisseur', ChoiceType::class, [
'choices' => $options['fournisseurs'],
// Comment définir le label du ChoiceType avec un objet Fournisseur ?
'choice_label' => ...
])
->add('save', SubmitType::class)
;
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Article',
'fournisseurs' => [],
));
}
}
// AppBundle\Controller\ArticleController
/**
* @Route("/article/new", name="article.new")
*/
public function newAction(Request $request)
{
$article = new Article();
$form = $this->createForm(ArticleType::class, $article, [
'fournisseurs' => $this->getDoctrine()->getRepository('AppBundle:Article')->findAll(),
]);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$article = $form->getData();
$em = $this->getDoctrine()->getManager();
$em->persist($article);
$em->flush();
return $this->redirect($request->getUri());
}
return $this->render('AppBundle::article/new.html.twig', [
'form' => $form->createView(),
]);
}