%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/emtnaeewxm/www/src/EEM/ArticleBundle/Form/
Upload File :
Create Path :
Current File : /home/emtnaeewxm/www/src/EEM/ArticleBundle/Form/ArticleType.php

<?php

namespace EEM\ArticleBundle\Form;

use EEM\ArticleBundle\Entity\Marque;
use EEM\ArticleBundle\Entity\Famille;
use EEM\ArticleBundle\Entity\Article;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Doctrine\ORM\EntityRepository;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Validator\Constraints\NotBlank;
use Doctrine\ORM\EntityManager;


class ArticleType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $type_form=$options['type_form'];
        $builder
            ->add('codeABarre',TextType::class,[
                "label"=>"Code à barre",
                "required"=>false,
                'attr' => [
                    'autocomplete' => 'off',
                    'placeholder' => 'Code à barre']])
            ->add('color',TextType::class,[
                "label"=>"Couleur",
                "required"=>false,
                'attr' => [
                    'autocomplete' => 'off',
                    'placeholder' => 'Couleur']])

            ->add('famille', EntityType::class, [
                'class' => 'EEMArticleBundle:Famille',
                'choice_label' => 'name',
                'query_builder' => function (EntityRepository $er) {
                    return $er->createQueryBuilder('p')
                        ->orderBy('p.name', 'ASC');
                },
                'placeholder' => 'Tous',
                'label' => 'Famille',
                'required' => false,
            ])
        ;
        if($type_form=='edit') {
            $builder
                ->add('prixFinal', TextType::class, [
                    "label" => "Prix vente",
                    "required" => false,
                    'attr' => [
                        'autocomplete' => 'off',
                        'placeholder' => 'Prix vente'],
                    'constraints' => [
                        new NotBlank(['message' => 'Prix vente obligatoire'])
                    ]
                ]);
        }



        $addFacilityForm = function (FormInterface $form, $famille_id) {

            $form->add('marque', EntityType::class, array(
                'class' => 'EEMArticleBundle:Marque',
                'placeholder' => 'Tous',
                'label' => 'Marque',
                'choice_label' => 'name',
                'required' => false,
                'query_builder' => function (EntityRepository $er) use ($famille_id) {
                    // this does the trick to get the right options
                    return $er->createQueryBuilder('p')
                        ->leftJoin('p.familles','familles')
                        ->addSelect('familles')
                        ->where('familles.id = :famille_id')
                        ->setParameter('famille_id', $famille_id)
                        ->orderBy('p.name', 'ASC');
                }
            ));


        };
        $builder->addEventListener(
            FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($addFacilityForm) {
            $famille = $event->getData()->getFamille();
            $famille_id = $famille ? $famille->getId() : null;
            $addFacilityForm($event->getForm(), $famille_id);
        }
        );
        $builder->addEventListener(
            FormEvents::PRE_SUBMIT, function (FormEvent $event) use ($addFacilityForm) {
            $data = $event->getData();
            $famille_id = array_key_exists('famille', $data) ? $data['famille'] : null;

            $addFacilityForm($event->getForm(), $famille_id);
        }
        );

        $addFacilityForm = function (FormInterface $form, $marque_id) {


            $form->add('modele', EntityType::class, array(
                'class' => 'EEMArticleBundle:Modele',
                'placeholder' => 'Tous',
                'label' => 'Modèle',
                'choice_label' => 'name',
                'required' => false,
                'query_builder' => function (EntityRepository $er) use ($marque_id) {
                    // this does the trick to get the right options
                    return $er->createQueryBuilder('t')
                        ->where('t.marque = :marque_id')
                        ->setParameter('marque_id', $marque_id)
                        ->orderBy('t.name', 'ASC');
                }
            ));
        };

        $builder->addEventListener(
            FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($addFacilityForm) {
            $marque = $event->getData()->getMarque();
            $marque_id = $marque ? $marque->getId() : null;
            $addFacilityForm($event->getForm(), $marque_id);
        }
        );

        $builder->addEventListener(
            FormEvents::PRE_SUBMIT, function (FormEvent $event) use ($addFacilityForm) {
            $data = $event->getData();
            $marque_id = array_key_exists('marque', $data) ? $data['marque'] : null;
            $addFacilityForm($event->getForm(), $marque_id);
        }
        );
    }

    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'EEM\ArticleBundle\Entity\Article',
            'type_form' => ''
        ));
    }

    /**
     * {@inheritdoc}
     */
    public function getBlockPrefix()
    {
        return 'article_type';
    }


}

Zerion Mini Shell 1.0