src/Form/Carrito/CarroType.php line 21
- <?php
- namespace App\Form\Carrito;
- use Symfony\Component\Form\AbstractType;
- use Symfony\Component\Form\FormBuilderInterface;
- use Symfony\Component\Form\FormView;
- use Symfony\Component\Form\FormInterface;
- use Symfony\Component\OptionsResolver\OptionsResolver;
- use App\Form\Carrito\CartStep1Type;
- use Doctrine\ORM\EntityManagerInterface;
- use Doctrine\ORM\EntityRepository;
- use App\Entity\Pedido;
- use App\Entity\Carro;
- use Symfony\Component\Form\FormEvent;
- use Symfony\Component\Form\FormEvents;
- use Symfony\Component\Form\Extension\Core\Type\CollectionType;
- use Symfony\Component\Form\Extension\Core\Type\HiddenType;
- use Symfony\Component\Form\Extension\Core\Type\TextType;
- use Symfony\Bridge\Doctrine\Form\Type\EntityType;
- class CarroType extends AbstractType
- {
- protected $em;
- protected $locale;
- protected $pedidos;
- public function __construct(EntityManagerInterface $em, $locale=null)
- {
- $this->em = $em;
- $this->locale = $locale;
- }
- public function buildForm(FormBuilderInterface $builder, array $options)
- {
- //Las entidades mostradas al usuario son del tipo DivisaIdioma (ver CartStep1Type)
- //mientras que las que recibe el pedido son del tipo Divisa
- //en PRE_SUMBIT guardamos las ID'S y en SUBMIT buscamos las divisas correspondientes
- //a la entidad para hacer la transformación de DivisaIdioma(Formulario) a Divisa(Entidad Carro)
- $builder->addEventListener(FormEvents::SUBMIT, function(FormEvent $event) {
- $data = $event->getData();
- $pedidos=$data->getPedidos();
- foreach ($pedidos as $key=>$pedido) {
- $this->pedidos[$key]['divisaOrigen'] = 10;
- }
- // dump($this->pedidos);
- // dump($pedidos);
- // dump($data);die();
- foreach ($pedidos as $key=>$pedido) {
- $divisaFinal=$this->em->getRepository('App\Entity\Divisa')->findOneById($this->pedidos[$key]['divisaFinal']);
- $divisaOrigen=$this->em->getRepository('App\Entity\Divisa')->findOneById($this->pedidos[$key]['divisaOrigen']);
- /* $divisaFinal= $pedido->getDivisaFinal();
- $divisaOrigen= $pedido->getDivisaOrigen();*/
- $pedido->setDivisaFinal($divisaFinal);
- $pedido->setDivisaOrigen($divisaOrigen);
- }
- // dump($pedidos); die();
- });
- $builder->addEventListener(FormEvents::PRE_SUBMIT, function(FormEvent $event) {
- $data = $event->getData();
- $this->pedidos=$data['pedidos'];
- });
- $carro = $builder->getData();
- foreach ($carro->getPedidos() as $pedido){
- }
- $builder
- ->add('pedidos', CollectionType::class, array(
- 'entry_type' => CartStep1Type::class,
- 'by_reference' => false,
- 'label' => false,
- 'entry_options' => array(
- 'label' => false,
- 'data_class' => 'App\Entity\Pedido'
- ),
- 'allow_add' => true,
- 'prototype' => true,
- 'allow_delete' => true,
- // 'cascade_validation' => true,
- )
- )
- ->add('reserva', HiddenType::class, array(
- 'label' => false,
- 'data' => 0,
- 'attr' => array(
- 'class'=>'cantidadFinal'
- )
- )
- )
- ->add('tipo', HiddenType::class, array(
- 'data' => 0,
- 'required' => false,
- 'attr' => array('name' => 'tags'),
- 'mapped' => false,
- 'data' => $options['tipo_value'],
- )
- )
- ->add('codigoPromo', HiddenType::class, array(
- 'label' => 'Codigo Promocional',
- 'attr' => array(
- 'class' => 'codigoPromInp',
- )
- )
- )
- ->add('tipoPromo', HiddenType::class, array(
- 'required' => false,
- 'mapped' => false,
- 'data' => $options['tipo_promo'],
- )
- )
- ->add('metodoEntrega', HiddenType::class, array(
- 'required' => false,
- 'mapped' => false,
- )
- )
- ->add('provincia', HiddenType::class, array(
- 'label' => false,
- 'required' => false
- )
- )
- ;
- }
- public function configureOptions(OptionsResolver $resolver)
- {
- // parent::setDefaultOptions($resolver);
- $resolver->setDefaults( array(
- 'data_class' => 'App\Entity\Carro',
- 'tipo_value' => 0,
- 'tipo_promo' => Carro::TIPO_PROMO_DIVISA,
- 'em' => null,
- 'locale' => null
- ));
- }
- public function getName()
- {
- return 'dinamic_shop_carro';
- }
- }