コード例 #1
1
 public function submit(FormEvent $event)
 {
     $entity = $event->getData();
     if (!empty($entity) && $entity->isLocked()) {
         $event->getForm()->addError(new FormError('error.element_locked'));
     }
 }
 /**
  * Reorder the children of the parent form data at $this->name.
  *
  * For whatever reason we have to go through the parent object, just
  * getting the collection from the form event and reordering it does
  * not update the stored order.
  *
  * @param FormEvent $event
  */
 public function onSubmit(FormEvent $event)
 {
     $form = $event->getForm()->getParent();
     $data = $form->getData();
     if (!is_object($data)) {
         return;
     }
     $accessor = PropertyAccess::getPropertyAccessor();
     // use deprecated BC method to support symfony 2.2
     $newCollection = $accessor->getValue($data, $this->name);
     if (!$newCollection instanceof Collection) {
         return;
     }
     /* @var $newCollection Collection */
     $newCollection->clear();
     /** @var $item FormBuilder */
     foreach ($form->get($this->name) as $key => $item) {
         if ($item->get('_delete')->getData()) {
             // do not re-add a deleted child
             continue;
         }
         if ($item->getName() && !is_numeric($item->getName())) {
             // keep key in collection
             $newCollection[$item->getName()] = $item->getData();
         } else {
             $newCollection[] = $item->getData();
         }
     }
 }
コード例 #3
1
 public function preSubmit(FormEvent $event)
 {
     $data = $event->getData();
     $form = $event->getForm();
     $province_id = array_key_exists('province', $data) ? $data['province'] : null;
     $this->addCityForm($form, $province_id);
 }
コード例 #4
1
ファイル: RelationType.php プロジェクト: samuvack/admin
 public function onPreSubmit(FormEvent $event)
 {
     $form = $event->getForm();
     $data = $event->getData();
     $type = $this->app['orm.em']->getRepository(':Property')->find($data['property'])->getDataType();
     $this->renderFormType($form, $type);
 }
コード例 #5
0
 /**
  * Create all diagnosis fields not already set.
  *
  * @param FormEvent $event
  */
 public function buildForm(FormEvent $event)
 {
     $regimen = $event->getData();
     if ($regimen->getId()) {
         $event->getForm()->remove('patient');
     }
     $config = $event->getForm()->get('activities')->getConfig();
     $type = $config->getType()->getName();
     $options = $config->getOptions();
     $qb = $options['options']['query_builder'] = $this->activityRepository->getQueryBuilder();
     // If no diagnosis is present, look for patient.
     if (null === $regimen || null === $regimen->getDiagnosis()) {
         if (null === $regimen->getPatient()) {
             $qb->andWhere('activity.patient IS NULL');
             $qb->andWhere('activity.diagnosis IS NULL');
         } else {
             $qb->andWhere('activity.patient = :patient');
             $qb->andWhere('activity.diagnosis IS NULL');
             $qb->setParameter(':patient', $regimen->getPatient());
         }
     } else {
         $qb->resetDQLPart('where')->where('activity.diagnosis = :diagnosis')->setParameter(':diagnosis', $regimen->getDiagnosis());
     }
     if (($startDate = $regimen->getStartDate()) instanceof DateTime) {
         $qb->andWhere('activity.activityDate >= :startDate')->setParameter(':startDate', $startDate);
     }
     if (($endDate = $regimen->getEndDate()) instanceof DateTime) {
         $qb->andWhere('activity.activityDate <= :endDate')->setParameter(':endDate', $endDate);
     }
     $event->getForm()->add('activities', $type, $options);
 }
コード例 #6
0
 /**
  * Forbids to erase a value
  *
  * @param FormEvent $event
  */
 public function onPreSubmit(FormEvent $event)
 {
     $data = $event->getData();
     if ($data['file'] instanceof UploadedFile) {
         $event->getForm()->remove('remove');
     }
     if (empty($data['file']) && (!isset($data['remove']) || !$data['remove'])) {
         $event->setData($event->getForm()->getViewData());
     }
 }
コード例 #7
0
 /**
  * Listener for the {@link FormEvents::POST_SUBMIT} event.
  *
  * @param FormEvent $event The event object
  */
 public function postSubmit(FormEvent $event)
 {
     if ($event->getForm()->isRoot()) {
         // Collect the submitted data of each form
         $this->dataCollector->collectSubmittedData($event->getForm());
         // Assemble a form tree
         // This is done again after the view is built, but we need it here as the view is not always created.
         $this->dataCollector->buildPreliminaryFormTree($event->getForm());
     }
 }
コード例 #8
0
 public function addFees(FormEvent $event)
 {
     /* @var $billingSpec BillingSpec */
     $billingSpec = $event->getData();
     //Attach a tier form
     if ($billingSpec->getType() == BillingSpec::TYPE_TIER) {
         $event->getForm()->add($this->factory->createNamed('fees', 'collection', $billingSpec->getFees(), array('type' => new TierFeeFormType(), 'allow_add' => true, 'by_reference' => false)));
     } elseif ($billingSpec->getType() == BillingSpec::TYPE_FLAT) {
         $event->getForm()->add($this->factory->createNamed('fees', 'collection', $billingSpec->getFees(), array('type' => new FlatFeeFormType(), 'allow_add' => true, 'by_reference' => false)));
     }
 }
コード例 #9
0
 /**
  * Listener for the {@link FormEvents::POST_SUBMIT} event.
  *
  * @param FormEvent $event The event object
  */
 public function postSubmit(FormEvent $event)
 {
     if ($event->getForm()->isRoot()) {
         // Collect the submitted data of each form
         $this->dataCollector->collectSubmittedData($event->getForm());
         // Assemble a form tree
         // This is done again in collectViewVariables(), but that method
         // is not guaranteed to be called (i.e. when no view is created)
         $this->dataCollector->buildPreliminaryFormTree($event->getForm());
     }
 }
コード例 #10
0
 /**
  * {@inheritdoc}
  */
 public function postSubmit(FormEvent $event)
 {
     $entity = $event->getForm()->getParent()->getData();
     if (!$entity instanceof CaseMailboxProcessSettings || !$entity->getMailbox()) {
         return;
     }
     /** @var Tag[] $tags */
     $tags = array_merge($event->getForm()->get('all')->getData(), $event->getForm()->get('owner')->getData());
     foreach ($tags as $tag) {
         $tag->setOrganization($entity->getMailbox()->getOrganization());
     }
 }
コード例 #11
0
 /**
  * @param FormEvent $event
  *
  * @return bool
  */
 protected function hasPrimaryBehaviour(FormEvent $event)
 {
     if (!$event->getForm()->getConfig()->getOption('handle_primary')) {
         return false;
     }
     /** @var FormInterface $child */
     foreach ($event->getForm() as $child) {
         $dataClass = $child->getConfig()->getDataClass();
         if ($dataClass && !in_array('Oro\\Bundle\\FormBundle\\Entity\\PrimaryItem', class_implements($dataClass))) {
             return false;
         }
     }
     return true;
 }
コード例 #12
0
ファイル: MatchTeamType.php プロジェクト: allejo/bzion
 /**
  * Form event handler that makes sure the participants are actually members
  * of the specified team
  * @param  FormEvent $event
  * @return void
  */
 public function checkTeamMembers(FormEvent $event)
 {
     $players = $event->getForm()->get('participants');
     $team = $event->getForm()->get('team')->getData();
     if (!$team || !$team instanceof \Model || !$team->isValid()) {
         return;
     }
     foreach ($players->getData() as $player) {
         if ($player && !$team->isMember($player->getId())) {
             $message = "{$player->getUsername()} is not a member of {$team->getName()}";
             $players->addError(new FormError($message));
         }
     }
 }
コード例 #13
0
 /**
  * @param FormEvent $event
  */
 public function buildCredentials(FormEvent $event)
 {
     /** @var array $data */
     $data = $event->getData();
     if (is_null($data)) {
         return;
     }
     $propertyPath = is_array($data) ? '[factoryName]' : 'factoryName';
     $factoryName = PropertyAccess::createPropertyAccessor()->getValue($data, $propertyPath);
     if (empty($factoryName)) {
         return;
     }
     $form = $event->getForm();
     $form->add('config', 'form');
     $configForm = $form->get('config');
     $gatewayFactory = $this->registry->getGatewayFactory($factoryName);
     $config = $gatewayFactory->createConfig();
     $propertyPath = is_array($data) ? '[config]' : 'config';
     $firstTime = false == PropertyAccess::createPropertyAccessor()->getValue($data, $propertyPath);
     foreach ($config['payum.default_options'] as $name => $value) {
         $propertyPath = is_array($data) ? "[config][{$name}]" : "config[{$name}]";
         if ($firstTime) {
             PropertyAccess::createPropertyAccessor()->setValue($data, $propertyPath, $value);
         }
         $type = is_bool($value) ? 'checkbox' : 'text';
         $options = array();
         $options['required'] = in_array($name, $config['payum.required_options']);
         $configForm->add($name, $type, $options);
     }
     $event->setData($data);
 }
コード例 #14
0
 function it_adds_payment_methods_choice_to_the_form(FormEvent $event, FormInterface $form, PaymentInterface $payment)
 {
     $event->getForm()->willReturn($form);
     $event->getData()->willReturn($payment);
     $form->add('method', Argument::type('string'), ['label' => 'sylius.form.checkout.payment_method', 'subject' => $payment, 'expanded' => true])->shouldBeCalled();
     $this->preSetData($event);
 }
コード例 #15
0
 public function onPreSetData(FormEvent $event)
 {
     $form = $event->getForm();
     if ('contact' === $form->getName()) {
         $form->add('sample_form', 'text');
     }
 }
コード例 #16
0
 public function preSetData(FormEvent $event)
 {
     $form = $event->getForm();
     $form->add('customData', CustomFormType::class, ['callback' => function (FormBuilderInterface $builder) {
         return $this->customFormModel->constructForm($builder);
     }, 'validationCallback' => 'validateForm']);
 }
コード例 #17
0
ファイル: AdvertType.php プロジェクト: GautierKris/Snoozit
 public function onPreSetData(FormEvent $event)
 {
     $form = $event->getForm();
     if (!is_object($this->user) || !$this->user instanceof UserInterface) {
         $form->add('guest', new GuestType());
     }
 }
コード例 #18
0
 /**
  * PRE_SET_DATA event handler
  *
  * @param FormEvent $event
  */
 public function preSetData(FormEvent $event)
 {
     $form = $event->getForm();
     if ($this->calendarConfig->isPublicCalendarEnabled() && $this->calendarConfig->isSystemCalendarEnabled()) {
         $options = ['required' => false, 'label' => 'oro.calendar.systemcalendar.public.label', 'empty_value' => false, 'choices' => [false => 'oro.calendar.systemcalendar.scope.organization', true => 'oro.calendar.systemcalendar.scope.system']];
         /** @var SystemCalendar|null $data */
         $data = $event->getData();
         if ($data) {
             $isPublicGranted = $this->securityFacade->isGranted('oro_public_calendar_management');
             $isSystemGranted = $this->securityFacade->isGranted($data->getId() ? 'oro_system_calendar_update' : 'oro_system_calendar_create');
             if (!$isPublicGranted || !$isSystemGranted) {
                 $options['read_only'] = true;
                 if (!$data->getId() && !$isSystemGranted) {
                     $options['data'] = true;
                 }
                 unset($options['choices'][$isSystemGranted]);
             }
         }
         $form->add('public', 'choice', $options);
     } elseif ($this->calendarConfig->isPublicCalendarEnabled()) {
         $form->add('public', 'hidden', ['data' => true]);
     } elseif ($this->calendarConfig->isSystemCalendarEnabled()) {
         $form->add('public', 'hidden', ['data' => false]);
     }
 }
コード例 #19
0
 public function preSubmit(FormEvent $event)
 {
     $data = $event->getData();
     $form = $event->getForm();
     $country_id = array_key_exists('country', $data) ? $data['country'] : null;
     $this->addProvinceForm($form, $country_id);
 }
コード例 #20
0
 /**
  * @param FormEvent $event
  */
 public function preSetData(FormEvent $event)
 {
     $parentData = $event->getForm()->getParent()->getData();
     if ($parentData) {
         $this->transformer->setAcl($parentData);
     }
 }
コード例 #21
0
 public function preSetData(FormEvent $event)
 {
     $form = $event->getForm();
     $data = $event->getData();
     if (!$data instanceof $this->dataClass) {
         return;
     }
     //loop over all columns and add the input
     foreach ($this->columns as $column => $options) {
         if (is_string($options)) {
             $column = $options;
             $options = array();
         }
         if (null === $options) {
             $options = array();
         }
         $type = 'text';
         if (array_key_exists('type', $options)) {
             $type = $options['type'];
         }
         $label = $column;
         if (array_key_exists('label', $options)) {
             $label = $options['label'];
         }
         $customOptions = array();
         if (array_key_exists('options', $options)) {
             $customOptions = $options['options'];
         }
         $options = array('label' => $label . ' ' . strtoupper($data->getLocale()));
         $options = array_merge($options, $customOptions);
         $form->add($column, $type, $options);
     }
 }
コード例 #22
0
 public function preSetData(FormEvent $event)
 {
     $data = $event->getData();
     $form = $event->getForm();
     // During form creation setData() is called with null as an argument
     // by the FormBuilder constructor. We're only concerned with when
     // setData is called with an actual Entity object in it (whether new,
     // or fetched with Doctrine). This if statement let's us skip right
     // over the null condition.
     if (null === $data) {
         return;
     }
     // Check the comment type and presend the required field to enter page/blog post id
     switch ($data->getCommentType()) {
         case 'Blog':
             $form->add($this->factory->createNamed('blogPost', 'entity', null, array('auto_initialize' => false, 'class' => 'BardisCMS\\BlogBundle\\Entity\\Blog', 'property' => 'title', 'expanded' => false, 'multiple' => false, 'label' => 'Select Linked Blog Post', 'attr' => array('class' => 'autoCompleteItems autoCompleteBlogs', 'data-sonata-select2' => 'false'), 'required' => false)));
             break;
             /* case 'Page':
                $form->add($this->factory->createNamed('page', 'entity', null, array('auto_initialize' => false, 'class' => 'BardisCMS\PageBundle\Entity\Page', 'property' => 'title', 'expanded' => false, 'multiple' => false, 'label' => 'Select Linked Page', 'attr' => array('class' => 'autoCompleteItems autoCompletePages', 'data-sonata-select2' => 'false'), 'required' => false)));
                break; */
         /* case 'Page':
            $form->add($this->factory->createNamed('page', 'entity', null, array('auto_initialize' => false, 'class' => 'BardisCMS\PageBundle\Entity\Page', 'property' => 'title', 'expanded' => false, 'multiple' => false, 'label' => 'Select Linked Page', 'attr' => array('class' => 'autoCompleteItems autoCompletePages', 'data-sonata-select2' => 'false'), 'required' => false)));
            break; */
         default:
     }
 }
コード例 #23
0
 /**
  * @param FormEvent $event
  */
 public function addFrontendWidgetField(FormEvent $event)
 {
     $form = $event->getForm();
     $attribute = $event->getData();
     $attributeType = ucfirst($attribute->getType()) . 'AttributeType';
     $form->add('frontendWidget', 'choice', array('label' => 'Frontend widget', 'choices' => call_user_func(array("Fyb\\Component\\Attribute\\AttributeType\\" . $attributeType, 'getFrontendWidgetChoicesList'))));
 }
 /**
  * @param FormEvent $event
  */
 protected function addFormType(FormEvent $event)
 {
     $form = $event->getForm();
     $data = $event->getData();
     $event->setData($data);
     if ($form->has('contentId')) {
         $form->remove('contentId');
     }
     if ($form->has('help-text')) {
         $form->remove('help-text');
     }
     $choices = array();
     if (!is_null($data)) {
         if (array_key_exists('contentType', $data) && $data['contentType'] != '') {
             $choices = array_merge($choices, $this->getChoices($data['contentType'], array_key_exists('choiceType', $data) && $data['choiceType'] != '' ? $data['choiceType'] : ReadContentRepositoryInterface::CHOICE_AND, array_key_exists('keywords', $data) && $data['keywords'] ? $data['keywords'] : null));
         }
         if (array_key_exists('contentId', $data) && $data['contentId'] != '') {
             $choices = array_merge($choices, $this->getChoice($data['contentId']));
         }
     }
     if (count($choices) > 0) {
         $form->add('contentId', 'choice', array('label' => false, 'empty_value' => ' ', 'required' => $this->required, 'choices' => $choices, 'attr' => $this->attributes));
     } else {
         $form->add('contentId', 'hidden', array('required' => $this->required, 'error_mapping' => 'help-text'));
         $form->add('help-text', 'button', array('disabled' => true, 'label' => 'open_orchestra_backoffice.form.content_search.use'));
     }
 }
コード例 #25
0
 /**
  * @param FormEvent $event
  * @param string    $formsEventName
  */
 public function __construct(FormEvent $event, $formsEventName)
 {
     $this->event = $event;
     $this->data = $event->getData();
     $this->form = $event->getForm();
     $this->formsEventName = $formsEventName;
 }
コード例 #26
0
 /**
  * @param FormEvent $event
  */
 public function preSubmit(FormEvent $event)
 {
     $data = $event->getData();
     $form = $event->getForm();
     $country = array_key_exists('country', $data) ? $data['country'] : null;
     $this->addDiscretionarySpendingForm($form, $country);
 }
コード例 #27
0
 public function preBind(FormEvent $event)
 {
     $form = $event->getForm();
     $data = $event->getData();
     $data = array_replace($this->unbind($form), $data ?: array());
     $event->setData($data);
 }
コード例 #28
0
 /**
  * @param \Symfony\Component\Form\FormEvent $event
  */
 public function onBind(FormEvent $event)
 {
     $collection = $event->getForm()->getData();
     $data = $event->getData();
     // looks like there is no way to remove other listeners
     $event->stopPropagation();
     if (!$collection) {
         $collection = $data;
     } elseif (count($data) === 0) {
         $this->modelManager->collectionClear($collection);
     } else {
         // merge $data into $collection
         foreach ($collection as $entity) {
             if (!$this->modelManager->collectionHasElement($data, $entity)) {
                 $this->modelManager->collectionRemoveElement($collection, $entity);
             } else {
                 $this->modelManager->collectionRemoveElement($data, $entity);
             }
         }
         foreach ($data as $entity) {
             $this->modelManager->collectionAddElement($collection, $entity);
         }
     }
     $event->setData($collection);
 }
コード例 #29
0
 /**
  * @param FormEvent $event
  */
 public function preSubmit(FormEvent $event)
 {
     $data = $event->getData();
     $form = $event->getForm();
     $headquartersId = array_key_exists('headquarter', $data) ? $data['headquarter'] : null;
     $this->addExamForm($form, $headquartersId);
 }
 /**
  * Method called before set data
  *
  * @param FormEvent $event
  */
 public function preSetData(FormEvent $event)
 {
     $data = $event->getData();
     if (null === $data) {
         return;
     }
     if (is_null($data->getId()) === false) {
         $form = $event->getForm();
         $this->disableField($form, 'code');
     }
     if (!$this->securityFacade->isGranted('pim_enrich_attributegroup_add_attribute')) {
         $form = $event->getForm();
         $this->hideGroupElement($form, $data);
     }
     $this->customizeForm($event->getForm(), $data);
 }