/** * This method is called right after the post is stored in the database during the Form submit. * * @param FormSubmitEvent $event */ public function postFormSubmit(FormSubmitEvent $event) { $post = $event->getPost(); $mailinglists = $email = null; foreach ($post->getValueSet()->getValues() as $value) { if ($value instanceof MailingListSubscribeValue && $value->getValue() == true) { $parameters = $value->getAttribute()->getParameters(); if (isset($parameters['mailingLists'])) { $mailinglists = $this->mailingListManager->getRepository()->findByIds($parameters['mailingLists']); } } elseif ($value instanceof EmailValue) { $email = $value->getValue(); } } if ($email && $mailinglists) { foreach ($mailinglists as $mailinglist) { $subscription = new Subscription(); $subscription->setEmail($email); $subscription->setMailingList($mailinglist); $this->subscriptionManager->save($subscription); } } }
/** * @inheritdoc */ public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(['class' => $this->mailingListManager->getClass(), 'choice_label' => 'displayName', 'expanded' => true, 'multiple' => true, 'query_builder' => function (EntityRepository $repository) { return $repository->createQueryBuilder('m')->orderBy('m.displayName'); }]); }