/** * @param FormBuilderInterface $builder */ protected function addTransport(FormBuilderInterface $builder) { $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { $options = ['label' => 'orocrm.campaign.emailcampaign.transport.label', 'required' => true, 'mapped' => false]; /** @var EmailCampaign $data */ $data = $event->getData(); if ($data) { $choices = $this->emailTransportProvider->getVisibleTransportChoices(); $currentTransportName = $data->getTransport(); if (!array_key_exists($currentTransportName, $choices)) { $currentTransport = $this->emailTransportProvider->getTransportByName($currentTransportName); $choices[$currentTransport->getName()] = $currentTransport->getLabel(); $options['choices'] = $choices; } } $form = $event->getForm(); $form->add('transport', 'orocrm_campaign_email_transport_select', $options); }); }
public function testTransportActualChoices() { $choices = ['t1' => 'Transport 1', 't2' => 'Transport 2']; $provider = new EmailTransportProvider(); $transportOne = $this->getMock('OroCRM\\Bundle\\CampaignBundle\\Transport\\TransportInterface'); $transportOne->expects($this->exactly(2))->method('getName')->will($this->returnValue('t1')); $transportOne->expects($this->once())->method('getLabel')->will($this->returnValue('Transport 1')); $transportTwo = $this->getMock('OroCRM\\Bundle\\CampaignBundle\\Transport\\TransportInterface'); $transportTwo->expects($this->exactly(2))->method('getName')->will($this->returnValue('t2')); $transportTwo->expects($this->once())->method('getLabel')->will($this->returnValue('Transport 2')); $transportTree = $this->getMock('OroCRM\\Bundle\\CampaignBundle\\Tests\\Unit\\Provider\\TransportStub'); $transportTree->expects($this->once())->method('getName')->will($this->returnValue('t3')); $transportTree->expects($this->never())->method('getLabel')->will($this->returnValue('Transport 3')); $transportTree->expects($this->once())->method('isVisibleInForm')->will($this->returnValue(false)); $provider->addTransport($transportOne); $provider->addTransport($transportTwo); $provider->addTransport($transportTree); $this->assertEquals($choices, $provider->getVisibleTransportChoices()); }
/** * {@inheritdoc} */ public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(['choices' => $this->emailTransportProvider->getVisibleTransportChoices()]); }