src/Form/Carrito/CarroType.php line 21
<?phpnamespace 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';}}