Bonjour bonsoir,
je souhaite créer un choix de radio bouton dans le code suivant
<?php
namespace AppBundle\Form\Annonce;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\FormEvent;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
class AnnonceCaracteristiqueType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
$caracteristique = $event->getData();
$form = $event->getForm();
$options = $form->getConfig()->getOptions();
$etagere = $caracteristique->getAnnonce()->getEtagere();
$caract = $caracteristique->getCaracteristique();
$nom = $caracteristique->getCaracteristique()->getNom();
if($nom){
$label = $nom;
}else{
$label = $caracteristique->getCaracteristique()->getSigle();
}
if($caracteristique->hasChoix()){
$choix = $this->array_choix($options, $caract, $etagere);
$form->add('choix', EntityType::class, array(
'class' => 'AppBundle:Magasin\Caracteristique\ChoixCaracteristique',
'choices' => $choix,
'placeholder' => 'Choix',
'label' => $label,
'required' => false
));
}
else{
$form->add('valeur', null, array(
'label' => $label
));
}
})
;
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Annonce\AnnonceCaracteristique',
'entityManager' => null
));
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'appbundle_annonce_caracteristique';
}
public function array_choix(array $options, $caract, $etagere){
$em = $options['entityManager'];
$EtgCaract = $em->getRepository('AppBundle:Magasin\Caracteristique\EtagereCaracteristique')->findOneBy(array('etagere' => $etagere, 'caracteristique' => $caract));
$choix = $EtgCaract->getChoix()->toArray();
return $choix;
}
}
j'ai déjà testé avec ce code :
$form->add('choix',ChoiceType::class,
array('choices' =>$choix,
'choices_as_values' => true,'multiple'=>false,'label'=>$nom,'expanded'=>true));
Malheureusement le résultat me sort les indices des tables alors que je souhaite avoir le libellé...
Pas facile.
merci pour votre aide !