src/Form/Carrito/CartStep1Type.php line 72

  1. <?php
  2. namespace App\Form\Carrito;
  3. use Doctrine\ORM\EntityRepository;
  4. use Symfony\Component\Form\AbstractType;
  5. use Symfony\Component\Form\FormBuilderInterface;
  6. use Symfony\Component\Form\FormView;
  7. use Symfony\Component\Form\FormEvent;
  8. use Symfony\Component\Form\FormEvents;
  9. use Symfony\Component\Form\FormInterface;
  10. use Symfony\Component\OptionsResolver\OptionsResolver;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  13. use Symfony\Component\Form\Extension\Core\Type\NumberType;
  14. class CartStep1Type extends AbstractType
  15. {
  16.     protected $em;
  17.     protected $locale;
  18.     protected $divisaOrigen;
  19.     protected $divisaFinal;
  20.     protected $choices;
  21.     protected $flagOrigen;
  22.     protected $flagFinal;
  23.     protected $divisas;
  24.     public function __construct(EntityManagerInterface $em$locale null)
  25.     {
  26.         $this->em $em;
  27.         $this->locale $locale;
  28.     }
  29.     /**
  30.      * Esta función busca divisas idioma con restricciones, p.e: los cheques no pueden estar en la derecha
  31.      * La clase a la que está enlazada es carro, que trabaja con Divisas en vez de DivisaIdioma así que transformamos
  32.      * los datos en Divisa antes de pasarla de vuelta al carro.
  33.      * @param  FormBuilderInterface $builder [description]
  34.      * @param  array                $options [description]
  35.      * @return [type]                        [description]
  36.      */
  37.     public function buildForm(FormBuilderInterface $builder, array $options)
  38.     {
  39.         $builder->addEventListener(FormEvents::PRE_SET_DATA, function(FormEvent $event) {
  40.             $data=$event->getData();
  41.             $form $event->getForm();
  42.             if($data){
  43.                 $data->getDivisaOrigen();
  44.                 $this->divisaOrigen=$data->getDivisaOrigen()->getId();
  45.                 $this->divisaFinal=$data->getDivisaFinal()->getId();
  46.                 $this->flagOrigen=$data->getDivisaOrigen()->getImagen();
  47.                 $this->flagFinal=$data->getDivisaFinal()->getImagen();
  48.             }
  49. //             if(isset($_COOKIE['cookieoficina']) && $_COOKIE['cookieoficina'] == 1){
  50. //                 $disable = true;
  51. // 
  52. //             }else{
  53. //                 $disable = false;
  54. // 
  55. //             }
  56.             $form->add('divisaOrigen'ChoiceType::class, array(
  57.                         'choices' => array_flip($this->choicesL),
  58.                         'mapped' => false,
  59.                         'disabled' => true,
  60.                         'label' => false,
  61.                         'data'  => $this->divisaOrigen,
  62.                         'attr' => array('class'=>'divisaOrigenForm col1'),
  63.                         'choice_attr' => function($choice$key$value) {
  64. //                             $dataImagen =  $choice->path($media, 'divisa');
  65.                             //TODO rehacer con ruta correcta
  66.                             $dataImagen "/upload/media/divisa/0001/01/".$this->divisas[$choice]->getImagen()->getProviderReference();
  67. //                             $dataImagen =  $this->flagOrigen;
  68.                             return ['data-imagen' => $dataImagen];
  69.                         },
  70.                 )
  71.             );
  72.             $form->add('divisaFinal'ChoiceType::class, array(
  73.                         'choices' => array_flip($this->choicesR),
  74.                         'mapped' => false,
  75.                         'label' => false,
  76.                         'data'  => $this->divisaFinal,
  77.                         'attr' => array('class'=>'divisaFinalForm'),
  78.                         'choice_attr' => function($choice$key$value) {
  79. //                             $dataImagen = $this->flagFinal;
  80.                             $dataImagen "/upload/media/divisa/0001/01/".$this->divisas[$choice]->getImagen()->getProviderReference();
  81.                             return ['data-imagen' => $dataImagen];
  82.                         },
  83.                 )
  84.             );
  85.         });
  86. //         $language=$this->em->getRepository('App\Entity\Idioma')->findOneByUrl($this->locale);
  87. //         $traduccionesL=$this->em->getRepository('App\Entity\DivisaIdioma')->findAllVisibles($language);
  88. //         $traduccionesR=$this->em->getRepository('App\Entity\DivisaIdioma')->findAllVisibles($language,[13]);
  89.         
  90.         $traduccionesL=$this->em->getRepository('App\Entity\Divisa')->findBy(["visible" => 1]);
  91.         $traduccionesR=$this->em->getRepository('App\Entity\Divisa')->findBy(["visible" => 1]);
  92.         
  93.         $choices$divisas = array();
  94.         foreach ($traduccionesL as $traduccion) {
  95.             $choicesL[$traduccion->getId()]=$traduccion->getNombre();
  96.             $this->divisas[$traduccion->getId()] = $traduccion;
  97.         }
  98.         foreach ($traduccionesR as $traduccion) {
  99.             if ($traduccion->getId() != 13)
  100.                 $choicesR[$traduccion->getId()]=$traduccion->getNombre();
  101.         }
  102.         $this->choicesL=$choicesL;
  103.         $this->choicesR=$choicesR;
  104.         $builder
  105.             ->add('divisaOrigen'ChoiceType::class, array(
  106.                         'choices' => $choicesL,
  107.                         'mapped' => false,
  108.                         'label' => false,
  109.                         'data'  => $this->divisaOrigen,
  110.                         'attr' => array('class'=>'divisaOrigenForm col1'),
  111.                         'choice_attr' => function($choice$key$value) {
  112. //                             $dataImagen = $this->flagOrigen;
  113.                             $dataImagen "/upload/media/divisa/0001/01/".$this->divisas[$choice]->getImagen()->getProviderReference();
  114.                             return ['data-imagen' => $dataImagen];
  115.                         },
  116.                 )
  117.             )
  118.             ->add('divisaFinal'ChoiceType::class, array(
  119.                         'choices' => $choicesR,
  120.                         'mapped' => false,
  121.                         'label' => false,
  122.                         'attr' => array('class'=>'divisaFinalForm'),
  123.                         'choice_attr' => function($choice$key$value) {
  124. //                             $dataImagen = $this->flagFinal;
  125.                             $dataImagen "/upload/media/divisa/0001/01/".$this->divisas[$choice]->getImagen()->getProviderReference();
  126.                             return ['data-imagen' => $dataImagen];
  127.                         },
  128.                 )
  129.             )
  130.             ->add('cantidadOrigen'NumberType::class, array(
  131.                         'label' => false,
  132.                         'attr' => array('class'=>'cantidadOrigen')
  133.                     )
  134.             )
  135.             ->add('cantidadFinal'NumberType::class, array(
  136.                         'label' => false,
  137.                         'attr' => array(
  138.                             'class'=>'cantidadFinal'
  139.                         )
  140.                     )
  141.             )
  142.         ;
  143.     }
  144.     public function configureOptions(OptionsResolver $resolver)
  145.     {
  146. //         parent::setDefaultOptions($resolver);
  147.         $resolver->setDefaults( array(
  148.                     'data_class' => 'App\Entity\Pedido'
  149.         ));
  150.     }
  151.     
  152.     
  153.     public function getName()
  154.     {
  155.             return 'dinamic_shop_cartStep1';
  156.     }
  157. }