public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('type', 'choice', array('label' => 'I am a', 'choices' => array(User::ROLE_STUDENT => 'Student', User::ROLE_GS1_MEMBER => 'Member'), 'data' => 'student', 'attr' => array('class' => 'account_type')))->add('firstName', null, array('attr' => array('maxlength' => false), 'render_required_asterisk' => true))->add('lastName', null, array('attr' => array('maxlength' => false), 'render_required_asterisk' => true))->add('email', 'email', array('label' => 'form.email', 'translation_domain' => 'FOSUserBundle', 'render_required_asterisk' => true))->add('plainPassword', 'repeated', array('type' => 'password', 'options' => array('translation_domain' => 'FOSUserBundle'), 'first_options' => array('label' => 'form.password', 'render_required_asterisk' => true), 'second_options' => array('label' => 'form.password_confirmation', 'render_required_asterisk' => true), 'invalid_message' => 'fos_user.password.mismatch'))->add('toc', 'checkbox', array('mapped' => false, 'label' => 'I agree to <a id="toc" href="#">terms & conditions</a>', 'constraints' => array(new IsTrue(array('message' => 'You must agree to terms & conditions')))))->add('studentProfile', new StudentRegistrationType($this->entityManager), array('label' => false, 'widget_form_group' => false, 'widget_type' => 'inline')); $builder->get('email')->setAttribute('render_required_asterisk', true); $builder->get('plainPassword')->setAttribute('render_required_asterisk', true); $builder->remove('username'); $formModifier = function (FormInterface $form, $type = null) { if ($type === User::ROLE_GS1_MEMBER) { $form->add('memberProfile', new MemberProfileType(), array('label' => false, 'widget_form_group' => false, 'widget_type' => 'inline', 'constraints' => array(new Valid())))->remove("studentProfile"); } }; $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($formModifier) { $data = $event->getData(); $formModifier($event->getForm(), $data !== null ? $data->getType() : null); }); $builder->get('type')->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) use($formModifier) { $type = $event->getForm()->getData(); $formModifier($event->getForm()->getParent(), $type); }); $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) { $form = $event->getForm(); if ($form->getErrors(true)->count() > 0) { $form->get('plainPassword')->get('first')->addError(new FormError('The form is invalid, you must re-enter your password')); } }); // $builder->get('activatedAccessCode') // ->addModelTransformer(new StudentAccessCodeTransformer($this->entityManager)); }
/** * @param FormBuilderInterface $builder * @param array $options * * @throws \Exception */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($options) { $form = $event->getForm(); /** @var DataInterface $data */ $data = $event->getData(); if ($data) { $family = $data->getFamily(); } else { $family = $options['family']; } if ($family) { $this->buildValuesForm($form, $family, $data, $options); $this->buildDataForm($form, $family, $data, $options); } else { $this->buildCreateForm($form, $options); } }); $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) { $data = $event->getData(); if ($data instanceof DataInterface) { $data->setUpdatedAt(new \DateTime()); } }); }
/** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($builder) { $event->getForm()->add('dateStart', 'datetime', array('label' => !(!$event->getData()->getId() && $event->getData()->getReplannedBy()) ? 'enigmatic.crm.activity.form.field.dateStart.label' : 'enigmatic.crm.activity.form.field.dateStart.replann.label', 'widget' => 'single_text', 'input' => 'datetime', 'format' => 'dd-MM-yyyy H:m', 'required' => true, 'attr' => array('class' => 'datetimepicker', 'placeholder' => 'dd-mm-yyyy h:m'))); if (!(!$event->getData()->getId() && $event->getData()->getReplannedBy())) { $event->getForm()->add('type', 'genemu_jqueryselect2_entity', array('class' => 'EnigmaticCRMBundle:ActivityType', 'multiple' => false, 'expanded' => false, 'label' => 'enigmatic.crm.activity.form.field.type.label', 'empty_value' => 'enigmatic.crm.activity.form.field.type.empty_value', 'choices' => $this->getArrayOfEntities(), 'required' => true))->add('comment', 'textarea', array('label' => 'enigmatic.crm.activity.form.field.comment.label', 'required' => false)); } if (!$event->getData()->getAccount() || $event->getData()->getId()) { $event->getForm()->add('account', 'genemu_jqueryselect2_entity', array('class' => 'EnigmaticCRMBundle:Account', 'multiple' => false, 'expanded' => false, 'label' => 'enigmatic.crm.activity.form.field.account.label', 'empty_value' => 'enigmatic.crm.activity.form.field.account.empty_value', 'required' => true, 'query_builder' => function (EntityRepository $er) use($event) { $params = array(); if ($this->authorizationChecker->isGranted('ROLE_RCA') && !$this->authorizationChecker->isGranted('ROLE_RS')) { $params['search']['agency'] = $this->userManager->getCurrent() ? $this->userManager->getCurrent()->getAgency() : null; } elseif ($this->authorizationChecker->isGranted('ROLE_CA') && !$this->authorizationChecker->isGranted('ROLE_RS')) { $params['search']['agency'] = $this->userManager->getCurrent() ? $this->userManager->getCurrent()->getAgency() : null; $params['search']['account_owner'] = $this->userManager->getCurrent(); } return $er->getER($params); })); } if ($event->getData()->getId()) { $event->getForm()->add('dateEnd', 'datetime', array('label' => 'enigmatic.crm.activity.form.field.dateEnd.label', 'widget' => 'single_text', 'input' => 'datetime', 'format' => 'dd-MM-yyyy H:m', 'required' => true, 'attr' => array('class' => 'datetimepicker', 'placeholder' => 'dd-mm-yyyy h:m'))); } if (!$event->getData()->getUser()) { $event->getForm()->add('user', 'genemu_jqueryselect2_entity', array('class' => 'EnigmaticCRMBundle:User', 'multiple' => false, 'expanded' => false, 'label' => 'enigmatic.crm.activity.form.field.user.label', 'empty_value' => 'enigmatic.crm.activity.form.field.user.empty_value', 'required' => true)); } }); $builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event) use($options) { if (!$event->getData()->getId()) { $date = clone $event->getData()->getDateStart(); $event->getData()->setDateEnd($date->modify('+30 min')); } }); }
public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('type', 'choice', array('choices' => Beneficiary::getTypeChoices()))->add('first_name', 'text', array('required' => true))->add('middle_name', 'text', array('required' => false))->add('last_name', 'text', array('required' => true))->add('birth_date', 'date', array('widget' => 'single_text', 'format' => 'MM-dd-yyyy', 'attr' => array('class' => 'jq-date input-small')))->add('city', 'text', array('required' => true))->add('street', 'text', array('required' => true))->add('state', 'entity', array('class' => 'WealthbotAdminBundle:State', 'label' => 'State', 'empty_value' => 'Select a State'))->add('zip', 'text', array('required' => true))->add('relationship', 'text', array('required' => true))->add('share', 'number', array('required' => true)); $factory = $builder->getFormFactory(); $showSsn = $this->showSsn; $updateSsn = function (FormInterface $form, $ssn) use($factory) { $form->add($factory->createNamed('ssn_1', 'text', null, array('property_path' => false, 'attr' => array('value' => $ssn[1]), 'constraints' => array(new NotBlank(array('message' => 'Can not be blank.')), new Regex(array('pattern' => '/^\\d+$/', 'message' => 'Must be number.')), new Length(array('min' => 3, 'max' => 3, 'minMessage' => 'Must have {{ limit }} digits.', 'maxMessage' => 'Must have {{ limit }} digits.'))))))->add($factory->createNamed('ssn_2', 'text', null, array('property_path' => false, 'attr' => array('value' => $ssn[2]), 'constraints' => array(new NotBlank(array('message' => 'Can not be blank.')), new Regex(array('pattern' => '/^\\d+$/', 'message' => 'Must be number.')), new Length(array('min' => 2, 'max' => 2, 'minMessage' => 'Must have {{ limit }} digits.', 'maxMessage' => 'Must have {{ limit }} digits.'))))))->add($factory->createNamed('ssn_3', 'text', null, array('property_path' => false, 'attr' => array('value' => $ssn[3]), 'constraints' => array(new NotBlank(array('message' => 'Can not be blank.')), new Regex(array('pattern' => '/^\\d+$/', 'message' => 'Must be number.')), new Length(array('min' => 4, 'max' => 4, 'minMessage' => 'Must have {{ limit }} digits.', 'maxMessage' => 'Must have {{ limit }} digits.')))))); }; $builder->addEventListener(FormEvents::PRE_BIND, function (FormEvent $event) use($updateSsn) { $form = $event->getForm(); $data = $event->getData(); if (array_key_exists('ssn_1', $data) && array_key_exists('ssn_2', $data) && array_key_exists('ssn_3', $data)) { $updateSsn($form, array('', $data['ssn_1'], $data['ssn_2'], $data['ssn_3'])); } }); $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($updateSsn, $showSsn) { $form = $event->getForm(); $data = $event->getData(); $ssn = array('', '', '', ''); if (true === $showSsn) { if ($data !== null && preg_match('/^([0-9]{3})([0-9]{2})([0-9]{4})$/', $data->getSsn(), $matches)) { $ssn = $matches; } } $updateSsn($form, $ssn); }); $builder->addEventListener(FormEvents::BIND, array($this, 'validatePreSave')); if (!$this->isPreSaved) { $builder->addEventListener(FormEvents::BIND, array($this, 'validate')); } }
/** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('name')->add('description')->add('countries')->add('tags', 'text', ['mapped' => false]); $tagManager = $this->tagManager; $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { if (!$event->getData() || !$event->getData()->getId()) { $event->getForm()->add('url', 'url')->add('type', 'text', ['mapped' => false, 'constraints' => [new Constraints\NotBlank(['groups' => ['new']]), new Constraints\Choice(['choices' => Platform::getAvailableTypes(), 'groups' => ['new'], 'message' => 'Неправильный тип площадки'])]]); } }); $builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event) use($tagManager) { /** @var Platform $platform */ $platform = $event->getData(); $form = $event->getForm(); $formTags = $form['tags']->getData(); if (!empty($formTags) && !is_string($formTags)) { $error = new FormError('неправильный формат тегов'); $form['tags']->addError($error); } else { $tagNames = $tagManager->splitTagNames($form['tags']->getData()); $tags = $tagManager->loadOrCreateTags($tagNames); $tagManager->replaceTags($tags, $platform); } if (!$platform->getId() && $platform->getUrl()) { // для новой площадки $url = new Url($platform->getUrl()); $platform->setUrl(rtrim($url->format('hp'), '//')); if (in_array($url->getHostname(), ['vk.com', 'vkontakte.ru']) !== ($form['type']->getData() == 'vk')) { $error = new FormError('Тип площадки не соответствует адресу'); $form['url']->addError($error); } } }); }
/** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('entityName', 'hidden', ['attr' => ['data-default-value' => Email::ENTITY_CLASS], 'constraints' => [new Assert\Choice(['choices' => ['', Email::ENTITY_CLASS]])]])->add('type', 'choice', ['label' => 'oro.email.emailtemplate.type.label', 'multiple' => false, 'expanded' => true, 'choices' => ['html' => 'oro.email.datagrid.emailtemplate.filter.type.html', 'txt' => 'oro.email.datagrid.emailtemplate.filter.type.txt'], 'required' => true])->add('translations', 'oro_email_emailtemplate_translatation', ['label' => 'oro.email.emailtemplate.translations.label', 'locales' => $this->getLanguages(), 'labels' => $this->getLocaleLabels(), 'content_options' => ['constraints' => [new Assert\NotBlank()], 'attr' => ['data-default-value' => $this->cm->get('oro_email.signature', '')]], 'subject_options' => ['constraints' => [new Assert\NotBlank()]]])->add('visible', 'checkbox', ['label' => 'oro.email.autoresponserule.form.template.visible.label', 'required' => false]); $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { $form = $event->getForm(); if ($form->has('owner')) { $form->remove('owner'); } if (!$event->getData()) { $emailTemplate = new EmailTemplate(); $emailTemplate->setContent($this->cm->get('oro_email.signature', '')); $emailTemplate->setEntityName(Email::ENTITY_CLASS); $event->setData($emailTemplate); } }); $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) { $template = $event->getData(); if (!$template || $template->getName()) { return; } $proposedName = $template->getSubject(); while ($this->templateExists($proposedName)) { $proposedName .= rand(0, 10); } $template->setName($proposedName); }); }
public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('security', new FundFormType()); if ($this->account) { $builder->add('account_id', 'hidden', array('data' => $this->account->getId(), 'property_path' => false)); } $em = $this->em; $ria = $this->account->getClient()->getProfile()->getRia(); $builder->addEventListener(FormEvents::PRE_BIND, function (FormEvent $event) use($em, $ria) { $form = $event->getForm(); $data = $event->getData(); $existSecurity = $em->getRepository('WealthbotAdminBundle:Security')->findOneBy(array('name' => $data['security']['name'], 'symbol' => $data['security']['symbol'])); if ($existSecurity) { $form->get('security')->setData($existSecurity); $existSecurityAssignment = $em->getRepository('WealthbotAdminBundle:SecurityAssignment')->findOneBy(array('ria_user_id' => $ria->getId(), 'security_id' => $existSecurity->getId())); if ($existSecurityAssignment) { $form->setData($existSecurityAssignment); } } }); $builder->addEventListener(FormEvents::BIND, function (FormEvent $event) use($ria) { $data = $event->getData(); if ($data) { // $data->setRia($ria); Deprecated } }); }
/** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { if ($options['autocomplete']) { $builder->addEventListener(FormEvents::PRE_SET_DATA, [$this, 'preSetData']); $builder->addEventListener(FormEvents::PRE_SUBMIT, [$this, 'preSubmit']); } }
public function buildForm(FormBuilderInterface $builder, array $options) { $this->checkOptions($options); $fieldName = $builder->getName(); $className = $options['translation_data_class']; $id = $options['object_id']; $locales = $options['locales']; $userLocale = $this->userLocale; // fetch data for each locale on this field of the object $translations = $this->translatablefieldmanager->getTranslatedFields($className, $fieldName, $id, $locales, $userLocale); // 'populate' fields by *hook on form generation $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($fieldName, $locales, $translations) { $form = $event->getForm(); foreach ($locales as $locale) { $data = array_key_exists($locale, $translations) && array_key_exists($fieldName, $translations[$locale]) ? $translations[$locale][$fieldName] : NULL; $form->add($locale, 'text', ['label' => false, 'data' => $data]); } // extra field for twig rendering $form->add('currentFieldName', 'hidden', array('data' => $fieldName)); }); // submit $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) use($fieldName, $className, $id, $locales, $userLocale) { $form = $event->getForm(); $this->translatablefieldmanager->persistTranslations($form, $className, $fieldName, $id, $locales, $userLocale); }); }
/** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $originalRecipients = new ArrayCollection(); $builder->add('originator', 'text', ['disabled' => true, 'mapped' => false, 'data' => $this->currentUser->getFullname()])->add('recipients', 'collection', ['type' => 'azhuravlov_sa_recipient', 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false])->add('subject')->add('priority', 'choice', ['choices' => Approval::getPriorities()])->add('body', 'textarea', ['attr' => array('style' => 'height: 500px;')])->add('submit', 'submit', ['attr' => array('class' => 'btn btn-success btn-lg')]); $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { /** @var Approval $data */ $data = $event->getData(); $data->setOriginator($this->currentUser); }); // Recipients before $builder->addEventListener(FormEvents::POST_SET_DATA, function (FormEvent $event) use(&$originalRecipients) { /** @var Approval $entity */ $entity = $event->getData(); foreach ($entity->getRecipients() as $recipient) { $originalRecipients->add($recipient); } }); // Recipients after $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) use(&$originalRecipients) { /** @var Approval $entity */ $entity = $event->getData(); foreach ($originalRecipients as $recipient) { if (false === $entity->getRecipients()->contains($recipient)) { $entity->getRecipients()->removeElement($recipient); } } }); }
public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('metatag', 'checkbox', array('required' => false))->add('display', 'checkbox', array('required' => false))->add('cod', 'text', array('attr' => array('pattern' => "^\\w*\$", 'oninvalid' => "setCustomValidity('The code can not have blank spaces neither special characters')", 'oninput' => "setCustomValidity('')"), 'label' => $this->translator->trans('Cod', array(), null, $this->locale)))->add('i18n_title', 'texti18n', array('label' => $this->translator->trans('Title', array(), null, $this->locale)))->add('i18n_description', 'textareai18n', array('required' => false, 'label' => $this->translator->trans('Description', array(), null, $this->locale))); $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { $tag = $event->getData(); $fields = $tag->getProperty("customfield"); foreach (array_filter(preg_split('/[,\\s]+/', $fields)) as $field) { $auxField = explode(":", $field); $formOptions = array('mapped' => false, 'required' => false, 'data' => $tag->getProperty($auxField[0])); try { $event->getForm()->add($auxField[0], isset($auxField[1]) ? $auxField[1] : 'text', $formOptions); } catch (\InvalidArgumentException $e) { $event->getForm()->add($auxField[0], 'text', $formOptions); } } }); $builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event) { $tag = $event->getData(); $fields = $tag->getProperty("customfield"); foreach (array_filter(preg_split('/[,\\s]+/', $fields)) as $field) { $auxField = explode(":", $field); $data = $event->getForm()->get($auxField[0])->getData(); $tag->setProperty($auxField[0], $data); } }); }
/** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('prices', ProductPriceCollectionType::NAME, ['label' => 'orob2b.pricing.productprice.entity_plural_label', 'required' => false, 'mapped' => false, 'constraints' => [new UniqueProductPrices()]]); $builder->addEventListener(FormEvents::POST_SET_DATA, [$this, 'onPostSetData']); $builder->addEventListener(FormEvents::PRE_SUBMIT, [$this, 'onPreSubmit']); $builder->addEventListener(FormEvents::POST_SUBMIT, [$this, 'onPostSubmit'], 10); }
public function buildForm(FormBuilderInterface $builder, array $options) { $projects = $this->projectRepository->getFormChoices(); $first = key($projects); $builder->add('name', TextType::class, array('label' => 'Name'))->add('project', ChoiceType::class, array('label' => 'Project', 'choices' => $projects))->add('url', UrlType::class, array('label' => 'Export URL'))->add('encryptionKey', TextType::class, ['label' => 'Encryption key'])->add('active', BooleanType::class, ['label' => 'Active'])->add('notes', TextareaType::class, ['label' => 'Notes'])->add('save', SubmitType::class, array('label' => 'Save')); $builder->get('project')->addModelTransformer(new EntityTransformer($this->projectRepository)); $formModifier = function (FormInterface $form, Project $project = null) use($first) { if (null === $project && false !== $first) { $project = $this->projectRepository->getItem($first); } $statuses = null === $project ? [] : $this->areaStatusRepository->getFormChoices($project); $form->add('areaStatus', new ChoiceType(), ['label' => 'Area status', 'choices' => $statuses]); }; $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($formModifier) { $data = $event->getData(); $formModifier($event->getForm(), $data->getProject()); if (!empty($data->getAreaStatus())) { $data->setAreaStatus($data->getAreaStatus()->getId()); } }); $builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event) { $data = $event->getData(); if (!empty($data->getAreaStatus()) && null !== $data->getProject()) { $this->areaStatusRepository->setProject($data->getProject()); $data->setAreaStatus($this->areaStatusRepository->getItem($data->getAreaStatus())); } }); $builder->get('project')->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) use($formModifier) { $project = $event->getForm()->getData(); $formModifier($event->getForm()->getParent(), $project); }); }
public function buildForm(FormBuilderInterface $builder, array $options) { $cityEmptyMessage = $this->translator->trans('No city found.'); $stateEmptyMessage = $this->translator->trans('No state found.'); $countryEmptyMessage = $this->translator->trans('No country found.'); $builder->add('name', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\TextType', array('label' => 'address.name'))->add('address', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\TextType', array('required' => true))->add('addressNumber', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\TextType', array('required' => false))->add('complement', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\TextType', array('required' => false))->add('location', 'LoginCidadao\\CoreBundle\\Form\\Type\\CitySelectorComboType', array('level' => 'city')); if (isset($this->preferredCountries[0])) { $id = $this->preferredCountries[0]->getId(); } else { $id = null; } $builder->add('preferredcountries', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\HiddenType', array("data" => $id, "required" => false, "mapped" => false))->add('postalCode'); $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { $data = $event->getData(); if ($data instanceof PersonAddress) { if ($data->getCity()) { $data->setState($data->getCity()->getState()); $data->setCountry($data->getCity()->getState()->getCountry()); } elseif ($data->getLocation() instanceof SelectData) { $data->getLocation()->toObject($data); } } }); $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) { $address = $event->getData(); if ($address instanceof PersonAddress) { $address->getLocation()->toObject($address); } }); }
/** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $person = $this->person; $clientId = $this->clientId; $receiversConfig = array('label' => 'Receivers', 'ajax_choice_attr' => array('filter' => array('route' => 'lc_dev_broadcasts_grid_receivers_filter', 'search_prop' => 'username', 'extra_form_prop' => array('client_id' => 'client_id')), 'selected' => array('route' => 'lc_dev_broadcasts_grid_receivers', 'extra_form_prop' => array('person_id' => 'receivers', 'client_id' => 'client_id')), 'property_value' => 'id', 'property_text' => 'fullNameOrUsername', 'search_prop_label' => 'dev.broadcasts.receivers.filter'), 'required' => true, 'empty_data' => null, 'class' => 'PROCERGSLoginCidadaoCoreBundle:Person', 'property' => 'fullNameOrUsername'); $builder->add('category', 'entity', array('required' => true, 'empty_data' => null, 'class' => 'PROCERGS\\LoginCidadao\\NotificationBundle\\Entity\\Category', 'property' => 'name', 'query_builder' => function (CategoryRepository $repository) use($person, $clientId) { return $repository->getOwnedCategoriesQuery($person)->andWhere('c.id = :clientId')->setParameter('clientId', $clientId); })); $builder->add('client_id', 'hidden', array('required' => false, 'mapped' => false, 'data' => $clientId)); $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) use(&$receiversConfig, &$person, $clientId) { $entity = $event->getData(); $form = $event->getForm(); $receiversConfig['query_builder'] = function (PersonRepository $repository) use($clientId, &$entity) { $sql = $repository->getFindAuthorizedByClientIdQuery($clientId); if (!empty($entity['receivers'])) { $sql->andWhere('p.id in (:receivers)'); $sql->setParameter('receivers', $entity['receivers']); } return $sql; }; $form->add('receivers', 'ajax_choice', $receiversConfig); }); $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use(&$receiversConfig, &$person, &$clientId) { $entity = $event->getData(); $form = $event->getForm(); $receiversConfig['query_builder'] = function (PersonRepository $repository) { $sql = $repository->createQueryBuilder('u'); $sql->where('1 != 1'); return $sql; }; $form->add('receivers', 'ajax_choice', $receiversConfig); }); }
/** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('page_url', 'text', ['label' => 'mautic.page.point.action.form.page.url', 'label_attr' => ['class' => 'control-label'], 'attr' => ['class' => 'form-control', 'tooltip' => 'mautic.page.point.action.form.page.url.descr', 'placeholder' => 'http://']]); // $default = (isset($options['data']) && isset($options['data']['first_time'])) ? $options['data']['first_time'] : false; // $builder->add('first_time', 'yesno_button_group', array( // 'label' => 'mautic.page.point.action.form.first.time.only', // 'attr' => array( // 'tooltip' => 'mautic.page.point.action.form.first.time.only.descr' // ), // 'data' => $default // )); $builder->add('page_hits', 'integer', ['label' => 'mautic.page.hits', 'label_attr' => ['class' => 'control-label'], 'required' => false, 'attr' => ['class' => 'form-control', 'tooltip' => 'mautic.page.point.action.form.page.hits.descr']]); $formModifier = function (FormInterface $form, $data) use($builder) { $unit = isset($data['accumulative_time_unit']) ? $data['accumulative_time_unit'] : 'H'; $form->add('accumulative_time_unit', 'hidden', ['data' => $unit]); $secondsTransformer = new SecondsConversionTransformer($unit); $form->add($builder->create('accumulative_time', 'text', ['label' => 'mautic.page.point.action.form.accumulative.time', 'required' => false, 'label_attr' => ['class' => 'control-label'], 'attr' => ['class' => 'form-control', 'tooltip' => 'mautic.page.point.action.form.accumulative.time.descr'], 'auto_initialize' => false])->addViewTransformer($secondsTransformer)->getForm()); $unit = isset($data['returns_within_unit']) ? $data['returns_within_unit'] : 'H'; $secondsTransformer = new SecondsConversionTransformer($unit); $form->add('returns_within_unit', 'hidden', ['data' => $unit]); $form->add($builder->create('returns_within', 'text', ['label' => 'mautic.page.point.action.form.returns.within', 'required' => false, 'label_attr' => ['class' => 'control-label'], 'attr' => ['class' => 'form-control', 'tooltip' => 'mautic.page.point.action.form.returns.within.descr', 'onBlur' => 'Mautic.EnablesOption(this.id)'], 'auto_initialize' => false])->addViewTransformer($secondsTransformer)->getForm()); $unit = isset($data['returns_after_unit']) ? $data['returns_after_unit'] : 'H'; $secondsTransformer = new SecondsConversionTransformer($unit); $form->add('returns_after_unit', 'hidden', ['data' => $unit]); $form->add($builder->create('returns_after', 'text', ['label' => 'mautic.page.point.action.form.returns.after', 'required' => false, 'label_attr' => ['class' => 'control-label'], 'attr' => ['class' => 'form-control', 'tooltip' => 'mautic.page.point.action.form.returns.after.descr', 'onBlur' => 'Mautic.EnablesOption(this.id)'], 'auto_initialize' => false])->addViewTransformer($secondsTransformer)->getForm()); }; $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($formModifier) { $data = $event->getData(); $formModifier($event->getForm(), $data); }); $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) use($formModifier) { $data = $event->getData(); $formModifier($event->getForm(), $data); }); }
public function buildForm(FormBuilderInterface $builder, array $options) { global $CONFIG; $builder->add('email', 'email', array('label' => 'Email', 'required' => true, 'max_length' => VARCHAR_COLUMN_LENGTH_USED)); $builder->add('username', 'text', array('label' => 'Username', 'required' => true, 'max_length' => VARCHAR_COLUMN_LENGTH_USED, 'attr' => array('autofocus' => 'autofocus'))); $builder->add('password1', 'password', array('label' => 'Password', 'required' => true)); $builder->add('password2', 'password', array('label' => 'Repeat password', 'required' => true)); $builder->add("agree", "checkbox", array('required' => true, 'label' => 'I agree to the terms and conditions')); if ($CONFIG->newUserRegisterAntiSpam) { $builder->add('antispam', 'text', array('label' => 'What is 2 + 2?', 'required' => true)); $myExtraFieldValidatorSpam = function (FormEvent $event) { $form = $event->getForm(); $myExtraField = $form->get('antispam')->getData(); if ($myExtraField != '4' && $myExtraField != 'four') { $form['antispam']->addError(new FormError("Please prove you are human")); } }; $builder->addEventListener(FormEvents::POST_BIND, $myExtraFieldValidatorSpam); } /** agree to terms **/ $myExtraFieldValidator1 = function (FormEvent $event) { $form = $event->getForm(); $myExtraField = $form->get('agree')->getData(); if (empty($myExtraField)) { $form['agree']->addError(new FormError("Please agree to the terms and conditions")); } }; $builder->addEventListener(FormEvents::POST_BIND, $myExtraFieldValidator1); /** email looks real **/ $myExtraFieldValidator2 = function (FormEvent $event) { $form = $event->getForm(); $myExtraField = $form->get('email')->getData(); if (!filter_var($myExtraField, FILTER_VALIDATE_EMAIL)) { $form['email']->addError(new FormError("Please enter a email address")); } }; $builder->addEventListener(FormEvents::POST_BIND, $myExtraFieldValidator2); /** username alphanumeric **/ $myExtraFieldValidator3 = function (FormEvent $event) { $form = $event->getForm(); $myExtraField = $form->get('username')->getData(); if (!ctype_alnum($myExtraField) || strlen($myExtraField) < 2) { $form['username']->addError(new FormError("Please choose a username with numbers and letters only and at least 2 characters.")); } }; $builder->addEventListener(FormEvents::POST_BIND, $myExtraFieldValidator3); /** passwords **/ $myExtraFieldValidator4 = function (FormEvent $event) { $form = $event->getForm(); $myExtraField1 = $form->get('password1')->getData(); $myExtraField2 = $form->get('password2')->getData(); if (strlen($myExtraField1) < 2) { $form['password1']->addError(new FormError("Please choose a password with at least 2 characters.")); } if ($myExtraField1 != $myExtraField2) { $form['password2']->addError(new FormError("Please enter your password again; they did not match.")); } }; $builder->addEventListener(FormEvents::POST_BIND, $myExtraFieldValidator4); }
/** * define form fields. * * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $viewToIdTransformer = new ViewToIdTransformer($this->entityManager); $builder->add('name', null, ['label' => 'form.article.name.label'])->add('description', null, ['label' => 'form.article.description.label', 'required' => false])->add('image', 'media', ['required' => false, 'label' => 'form.article.image.label'])->add($builder->create('blog', 'hidden', ['label' => 'form.article.blog.label'])->addModelTransformer($viewToIdTransformer))->add('template')->add('tags', 'tags', ['required' => false, 'multiple' => true])->remove('visibleOnFront'); $builder->get('blog')->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { $data = $event->getData(); $parent = $event->getForm()->getParent(); $this->manageCategories($data, $parent); $this->manageTemplate($data, $parent); }); $builder->get('blog')->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) { $data = $event->getData(); $parent = $event->getForm()->getParent(); $this->manageCategories($data, $parent); }); $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { $data = $event->getData(); $form = $event->getForm(); $this->manageTags($data, $form); }); $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) { $form = $event->getForm(); $data = $form->getData(); $this->manageTags($data, $form); }); }
/** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('parentPage', EntityIdentifierType::NAME, ['class' => $this->dataClass, 'multiple' => false])->add('title', 'text', ['label' => 'orob2b.cms.page.title.label', 'required' => true, 'constraints' => [new NotBlank()]])->add('content', OroRichTextType::NAME, ['label' => 'orob2b.cms.page.content.label', 'required' => false, 'wysiwyg_options' => ['statusbar' => true, 'resize' => true]]); $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { /** @var Page $page */ $page = $event->getData(); $form = $event->getForm(); if ($page && $page->getId()) { $form->add('slug', SlugType::NAME, ['label' => 'orob2b.redirect.slug.entity_label', 'mapped' => false, 'type' => 'update', 'current_slug' => $page->getCurrentSlug()->getSlugUrl()]); } else { $form->add('slug', SlugType::NAME, ['label' => 'orob2b.redirect.slug.entity_label', 'mapped' => false, 'type' => 'create']); } }); $builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event) { $slugData = $event->getForm()->get('slug')->getData(); /** @var Page $page */ $page = $event->getData(); if ($slugData['mode'] === 'new') { if (isset($slugData['redirect']) && $slugData['redirect']) { // Leave the old slug for page. And add a new slug as current for page $slug = new Slug(); $slug->setUrl($slugData['slug']); $page->setCurrentSlug($slug); } else { // Change current slug url $page->setCurrentSlugUrl($slugData['slug']); } } }); }
public function buildForm(FormBuilderInterface $builder, array $options) { $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { $employee = $event->getData(); $form = $event->getForm(); if ($employee && $employee->getId() === NULL && $this->boundlessAccess || $employee && $employee->getId() !== NULL && $this->boundedAccess) { $form->add('username', 'text', ['label' => 'employee.username.label', 'attr' => ['placeholder' => 'employee.username.placeholder']]); } }); $builder->add('name', 'text', ['required' => FALSE, 'label' => 'employee.name.label', 'attr' => ['placeholder' => 'employee.name.placeholder']])->add('surname', 'text', ['required' => FALSE, 'label' => 'employee.surname.label', 'attr' => ['placeholder' => 'employee.surname.placeholder']])->add('patronymic', 'text', ['required' => FALSE, 'label' => 'employee.patronymic.label', 'attr' => ['placeholder' => 'employee.patronymic.placeholder']])->add('email', 'email', ['required' => FALSE, 'label' => 'employee.email.label', 'attr' => ['placeholder' => 'employee.email.placeholder']])->add('phoneNumber', 'text', ['required' => FALSE, 'label' => 'employee.phone_number.label', 'attr' => ['placeholder' => 'employee.phone_number.placeholder']])->add('skypeName', 'text', ['required' => FALSE, 'label' => 'employee.skype_name.label', 'attr' => ['placeholder' => 'employee.skype_name.placeholder']]); $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { $employee = $event->getData(); $form = $event->getForm(); if ($employee && $employee->getId() !== NULL) { $form->add('employeeGroup', 'text', ['required' => FALSE, 'read_only' => TRUE, 'disabled' => TRUE, 'data_class' => 'AppBundle\\Entity\\Employee\\EmployeeGroup', 'label' => 'employee.employee_group.label'])->add('password', 'repeated', ['required' => FALSE, 'first_name' => "password", 'second_name' => "password_confirm", 'type' => "password", 'first_options' => ['label' => 'employee.password.label', 'attr' => ['placeholder' => 'employee.password.placeholder']], 'second_options' => ['label' => 'employee.password_confirm.label', 'attr' => ['placeholder' => 'employee.password_confirm.placeholder']]]); if ($this->boundedAccess) { $form->add('isEnabled', 'checkbox', ['required' => FALSE, 'label' => 'employee.is_enabled.label']); } $form->add('update', 'submit', ['label' => 'common.update.label']); if ($this->boundlessAccess) { $form->add('update_and_return', 'submit', ['label' => 'common.update_and_return.label']); } } else { $form->add('employeeGroup', 'entity', ['class' => "AppBundle\\Entity\\Employee\\EmployeeGroup", 'empty_data' => 0, 'choice_label' => "name", 'label' => 'employee.employee_group.label', 'empty_value' => 'common.choice.placeholder', 'invalid_message' => $this->_translator->trans('employee.employee_group.invalid_massage', [], 'validators'), 'query_builder' => function (EmployeeGroupRepository $repository) { return $repository->getSubordinateRolesQuery($this->boundlessAccess); }])->add('password', 'repeated', ['required' => TRUE, 'first_name' => "password", 'second_name' => "password_confirm", 'type' => "password", 'first_options' => ['label' => 'employee.password.label', 'attr' => ['data-rule-required' => "true", 'data-msg-required' => $this->_translator->trans('employee.password.not_blank', [], 'validators'), 'placeholder' => 'employee.password.placeholder']], 'second_options' => ['label' => 'employee.password_confirm.label', 'attr' => ['data-rule-required' => "true", 'data-msg-required' => $this->_translator->trans('employee.password_confirm.not_blank', [], 'validators'), 'placeholder' => 'employee.password_confirm.placeholder']]])->add('create', 'submit', ['label' => 'common.create.label']); if ($this->boundlessAccess) { $form->add('create_and_return', 'submit', ['label' => 'common.create_and_return.label']); } } }); }
/** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('gridName', 'hidden', ['required' => false])->add('entityClass', 'hidden', ['required' => false])->add('entityId', 'hidden', ['required' => false])->add('from', 'oro_email_email_address_from', ['required' => true, 'label' => 'oro.email.from_email_address.label', 'attr' => ['class' => 'from taggable-field']])->add('to', 'oro_email_email_address_recipients', ['required' => false, 'attr' => ['class' => 'taggable-field forged-required']])->add('cc', 'oro_email_email_address_recipients', ['required' => false, 'attr' => ['class' => 'taggable-field']])->add('bcc', 'oro_email_email_address_recipients', ['required' => false, 'attr' => ['class' => 'taggable-field']])->add('subject', 'text', ['required' => true, 'label' => 'oro.email.subject.label'])->add('body', 'oro_resizeable_rich_text', ['required' => false, 'label' => 'oro.email.email_body.label'])->add('template', 'oro_email_template_list', ['label' => 'oro.email.template.label', 'required' => false, 'depends_on_parent_field' => 'entityClass', 'configs' => ['allowClear' => true]])->add('type', 'choice', ['label' => 'oro.email.type.label', 'required' => true, 'data' => 'html', 'choices' => ['html' => 'oro.email.datagrid.emailtemplate.filter.type.html', 'txt' => 'oro.email.datagrid.emailtemplate.filter.type.txt'], 'expanded' => true])->add('attachments', 'oro_email_attachments', ['type' => 'oro_email_attachment', 'required' => false, 'allow_add' => true, 'prototype' => false, 'options' => ['required' => false]])->add('bodyFooter', 'hidden')->add('parentEmailId', 'hidden')->add('signature', 'hidden')->add('contexts', 'oro_email_contexts_select', ['label' => 'oro.email.contexts.label', 'tooltip' => 'oro.email.contexts.tooltip', 'required' => false, 'read_only' => true]); $builder->addEventListener(FormEvents::PRE_SET_DATA, [$this, 'initChoicesByEntityName']); $builder->addEventListener(FormEvents::PRE_SET_DATA, [$this, 'fillFormByTemplate']); $builder->addEventListener(FormEvents::PRE_SUBMIT, [$this, 'initChoicesByEntityName']); }
protected function buildDeleteField(FormBuilderInterface $builder, array $options) { // add delete only if there is a file $storage = $this->storage; $translator = $this->translator; $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($options, $storage, $translator) { $form = $event->getForm(); $object = $form->getParent()->getData(); // no object or no uploaded file: no delete button if (null === $object || null === $storage->resolveUri($object, $form->getName())) { return; } $form->add('delete', $this->getFieldType('checkbox'), array('label' => $translator->trans('form.label.delete', array(), 'VichUploaderBundle'), 'required' => false, 'mapped' => false)); }); // delete file if needed $handler = $this->handler; $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) use($handler) { $delete = $event->getForm()->has('delete') ? $event->getForm()->get('delete')->getData() : false; $entity = $event->getForm()->getParent()->getData(); if (!$delete) { return; } $handler->remove($entity, $event->getForm()->getName()); }); }
/** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('definition', 'hidden', array('required' => false)); $factory = $builder->getFormFactory(); $that = $this; $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($that, $factory) { $form = $event->getForm(); /** @var AbstractQueryDesigner $data */ $data = $event->getData(); if ($data) { $entity = $data->getEntity(); } else { $entity = null; } $that->addFields($form, $factory, $entity); }); $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) use($that, $factory) { $form = $event->getForm(); /** @var AbstractQueryDesigner $data */ $data = $event->getData(); if ($data) { $entity = $data['entity']; } else { $entity = null; } $that->addFields($form, $factory, $entity); }); }
/** * {@inheritdoc} * * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('folders', 'collection', ['required' => false, 'allow_add' => true, 'type' => 'oro_email_email_folder_api', 'error_bubbling' => false])->add('from', 'oro_email_email_address_api', ['required' => false])->add('to', 'oro_email_email_address_api', ['required' => false, 'multiple' => true])->add('cc', 'oro_email_email_address_api', ['required' => false, 'multiple' => true])->add('bcc', 'oro_email_email_address_api', ['required' => false, 'multiple' => true])->add('subject', 'text', ['required' => false, 'constraints' => [new Assert\Length(['max' => 500])]])->add('body', 'text', ['required' => false])->add('bodyType', 'hidden', ['required' => false, 'data_transformer' => 'oro_email.email_body_type_transformer'])->add('createdAt', 'oro_datetime', ['required' => false])->add('sentAt', 'oro_datetime', ['required' => false])->add('receivedAt', 'oro_datetime', ['required' => false])->add('internalDate', 'oro_datetime', ['required' => false])->add('importance', 'hidden', ['required' => false, 'data_transformer' => 'oro_email.email_importance_transformer'])->add('head', 'choice', ['required' => false, 'choices' => [0 => false, 1 => true]])->add('seen', 'choice', ['required' => false, 'choices' => [0 => false, 1 => true]])->add('messageId', 'text', ['required' => false, 'constraints' => [new Assert\Length(['max' => 255])]])->add('xMessageId', 'text', ['required' => false, 'constraints' => [new Assert\Length(['max' => 255])]])->add('xThreadId', 'text', ['required' => false, 'constraints' => [new Assert\Length(['max' => 255])]])->add('thread', 'oro_entity_identifier', ['required' => false, 'class' => 'OroEmailBundle:EmailThread', 'multiple' => false, 'error_bubbling' => false])->add('refs', 'text', ['required' => false]); $builder->addEventSubscriber(new PatchSubscriber()); $builder->addEventListener(FormEvents::POST_SET_DATA, [$this, 'postSetData']); $builder->addEventListener(FormEvents::POST_SUBMIT, [$this, 'postSubmit']); }
/** * @param FormBuilderInterface $builder */ protected function addListeners(FormBuilderInterface $builder) { $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { /** @var ProductPrice $data */ $data = $event->getData(); $form = $event->getForm(); $precision = null; if ($data && $data->getProduct()) { /** @var Product $product */ $product = $data->getProduct(); $precision = $this->getPrecision($product, $data->getUnit()->getCode()); } $this->addQuantity($form, $precision); }); $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) { $form = $event->getForm(); $data = $event->getData(); $precision = null; if ($data && array_key_exists('unit', $data) && $form->getData()) { $unitCode = $data['unit']; /** @var Product $product */ $product = $form->getData()->getProduct(); $precision = $this->getPrecision($product, $unitCode); } $this->addQuantity($form, $precision, true); }); $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) { /** @var ProductPrice $price */ $price = $event->getData(); if ($price) { $price->updatePrice(); } }); }
/** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->addModelTransformer(new TaggingTransformer($this->tagRepository, $options['delimiter'])); $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) use($options) { $tags = $event->getData(); $event->setData(is_array($tags) ? implode($options['delimiter'], $tags) : $tags); }); // TODO: BUG FIXME not work when object have no id (none persited object) $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) { $object = $event->getForm()->getParent()->getData(); if (!$object instanceof TagsAwareInterface || !$object instanceof OriginContextInterface) { return; } $tags = $this->tagRepository->resolveWithString($event->getData()) ?: array(); $object->setTags(null); /** @var TaggingInterface[] $oldTaggings */ $oldTaggings = $this->taggingRepository->findBy(array('originAlias' => $object->getOriginalAlias(), 'originId' => $object->getId())); foreach ($oldTaggings as $oldTagging) { if (!in_array($oldTagging->getTag(), $tags)) { $this->taggingRepository->getManager()->remove($oldTagging); } } $this->taggingRepository->getManager()->flush(); foreach ($tags as $tag) { $tagging = $this->taggingRepository->findWithTagAndAlias($tag, $object, true); $this->originator->setOrigin($tagging, $object); $this->taggingRepository->add($tagging); $object->addTag($tag); } }); }
/** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $steam = $builder->getData(); $builder->add('name', 'text', ['label' => 'game.name'])->add('machine', 'dedipanel_machine_entity')->add('dir', 'text', ['label' => 'game.dir'])->add('port', 'integer', ['label' => 'game.port'])->add('game', 'entity', ['label' => 'game.selectGame', 'class' => 'DPGameBundle:Game', 'query_builder' => function (GameRepository $repo) { return $repo->getQBAvailableSteamGames(); }])->add('mode', 'choice', ['choices' => SteamServer::getModeList(), 'empty_value' => 'steam.chooseGameMode', 'label' => 'steam.gameMode', 'required' => false])->add('maxplayers', 'integer', ['label' => 'game.maxplayers'])->add('rconPassword', 'text', ['label' => 'game.rcon.password'])->add('svPassword', 'text', ['label' => 'steam.svPassword', 'required' => false])->add('core', 'dedipanel_core_assignment', ['machine' => $steam->getMachine()])->add('alreadyInstalled', 'dictionary', ['name' => 'yes_no', 'label' => 'game.isAlreadyInstalled', 'expanded' => true]); $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) { /** @var \Symfony\Component\Form\FormInterface $form */ $form = $event->getForm(); /** @var \DP\GameServer\SteamServerBundle\Entity\SteamServer $steam */ $steam = $event->getData(); if ($steam->getId() != null && $steam->getInstallationStatus() > 100) { $form->add('rebootAt', 'time', ['label' => 'steam.rebootAt', 'required' => false]); } }); $builder->addEventListener(FormEvents::POST_SET_DATA, function (FormEvent $event) { /** @var \Symfony\Component\Form\FormInterface $form */ $form = $event->getForm(); /** @var \DP\GameServer\SteamServerBundle\Entity\SteamServer $steam */ $steam = $event->getData(); if ($steam->getGame() !== null && $steam->getGame()->getAppId() == 740) { // == csgo $form->add('mode', 'choice', ['choices' => SteamServer::getModeList(), 'label' => 'steam.gameMode', 'empty_value' => 'steam.chooseGameMode']); } elseif ($steam->getGame() !== null) { $form->remove('mode'); } }); }
/** * buildForm * Grabs organization-specific class types * * @param FormBuilderInterface $builder * @param array $options * @access public * @return void */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('organization', 'entity', array('class' => 'TSKUserBundle:Organization', 'attr' => array('class' => 'input-medium'))); $factory = $builder->getFormFactory(); $builder->addEventListener(FormEvents::PRE_BIND, function (FormEvent $event) use($factory) { $form = $event->getForm(); $data = $event->getData(); $organization = !empty($data['organization']) ? $data['organization'] : ''; $school = !empty($data['school']) ? $data['school'] : ''; if ($organization) { $form->add($factory->createNamed('school', 'entity', NULL, array('class' => 'TSKSchoolBundle:School', 'data' => $school, 'required' => true, 'attr' => array('class' => 'input-medium'), 'empty_value' => '-- Select School', 'query_builder' => function (EntityRepository $er) use($organization) { return $er->createQueryBuilder('s')->innerJoin('s.contact', 'c', 'WITH', 'c.organization = :organization')->setParameter(':organization', $organization); }))); } }); $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($factory) { $form = $event->getForm(); $data = $event->getData(); $organization = $data->getOrganization(); $school = $data->getSchool(); if ($organization) { $form->add($factory->createNamed('school', 'entity', NULL, array('class' => 'TSK\\SchoolBundle\\Entity\\School', 'data' => $school, 'required' => true, 'empty_value' => '-- Select School', 'attr' => array('class' => 'input-medium'), 'query_builder' => function (EntityRepository $er) use($organization) { return $er->createQueryBuilder('s')->innerJoin('s.contact', 'c', 'WITH', 'c.organization = :organization')->setParameter(':organization', $organization); }))); } }); }
public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('institution', 'entity', array('class' => 'App\\ResumeBundle\\Entity\\Institution', 'label' => false, 'required' => true, 'attr' => array('class' => 'institution-select'), 'widget_form_group' => false, 'horizontal_input_wrapper_class' => "col-sm-6 col-xs-12 institution-wrapper"))->add('otherInstitution', 'text', array('label' => false, 'required' => true, 'attr' => array('placeholder' => 'Institution name'), 'widget_form_group' => false, 'horizontal_input_wrapper_class' => 'other-institution-wrapper col-sm-6 col-xs-12 hidden', 'constraints' => array(new Length(array('max' => 100)))))->add('degree', null, array('label' => false, 'widget_form_group' => false, 'horizontal_input_wrapper_class' => "col-sm-6 col-xs-12 pull-right", 'constraints' => array(new Length(array('max' => 100)), new NotBlank()), 'attr' => array('placeholder' => 'Degree (e.g. Bachelor of Commerce) ', 'maxlength' => false))); // If institution is empty remove that field $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $ev) { $edu = $ev->getData(); if ($edu === null) { return; } if ($edu->getInstitution() === null) { $ev->getForm()->remove('institution'); } }); // Remove institution if other institution has an error or has a value $builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event) { $edu = $event->getData(); if (!$edu->getInstitution() && !$edu->getOtherInstitution()) { $event->getForm()->remove('institution'); $event->getForm()->get('otherInstitution')->addError(new FormError("Institution name is required")); } if (!$edu->getInstitution() && $edu->getOtherInstitution()) { $event->getForm()->remove('institution'); } }); }
public function buildForm(FormBuilderInterface $builder, array $options) { // You could tag the permission managers and then get them // here instead of hard coding ... $builder->add('permissionType', 'choice', array('choices' => array('admin' => 'sonata admins', 'object' => 'objects', 'route' => 'routes'), 'label' => 'Permission Type')); $builder->add('identity', 'tsk_identity_dropdown'); $builder->add('identityType', 'hidden'); $factory = $builder->getFormFactory(); // We use a closure to populate permissions and masks for user $refreshPerms = function ($form, $perms) use($factory) { $form->add($factory->createNamed('permissions', 'collection', $perms, array('type' => 'tsk_permission_type', 'options' => array('label_attr' => array('class' => 'perm-collection'))))); }; // // Use FormEvents to add the permissions array dynamically // $builder->addEventListener(FormEvents::PRE_BIND, function (FormEvent $event) use($factory, $refreshPerms) { $form = $event->getForm(); $data = $event->getData(); if (!empty($data['identity'])) { $perms = $this->permissionsManager->getPermissionsForIdentity($data['identity'], $data['identityType']); $refreshPerms($form, $perms); } }); $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($factory, $refreshPerms) { $form = $event->getForm(); $data = $event->getData(); if ($data->getIdentity()) { $perms = $this->permissionsManager->getPermissionsForIdentity($data->getIdentity(), $data->getIdentityType()); $refreshPerms($form, $perms); } }); }