Quantcast
Channel: Grafikart | Derniers Sujets du forum
Viewing all articles
Browse latest Browse all 1542

symfony [choicetype]

$
0
0

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 !


Viewing all articles
Browse latest Browse all 1542

Trending Articles