/** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $entity = $options['entity']; $view = $options['view']; $entityConfig = $this->configurator->getEntityConfiguration($entity); $entityProperties = $entityConfig[$view]['fields']; foreach ($entityProperties as $name => $metadata) { $formFieldOptions = $metadata['type_options']; if ('association' === $metadata['type']) { if ($metadata['associationType'] & ClassMetadata::TO_MANY) { $formFieldOptions['attr']['multiple'] = true; } // supported associations are displayed using advanced JavaScript widgets $formFieldOptions['attr']['data-widget'] = 'select2'; } if ('collection' === $metadata['fieldType']) { if (!isset($formFieldOptions['allow_add'])) { $formFieldOptions['allow_add'] = true; } if (!isset($formFieldOptions['allow_delete'])) { $formFieldOptions['allow_delete'] = true; } // The "delete_empty" option exists as of Sf >= 2.5 if (class_exists('Symfony\\Component\\Form\\FormErrorIterator')) { if (!isset($formFieldOptions['delete_empty'])) { $formFieldOptions['delete_empty'] = true; } } } elseif ('checkbox' === $metadata['fieldType'] && !isset($formFieldOptions['required'])) { $formFieldOptions['required'] = false; } if (!isset($formFieldOptions['required'])) { if (null !== ($guessRequired = $this->guesser->guessRequired($builder->getOption('data_class'), $name))) { $formFieldOptions['required'] = $guessRequired->getValue(); } } // Configure "placeholder" option for entity fields if ('association' === $metadata['type'] && $metadata['associationType'] & ClassMetadata::TO_ONE && !isset($formFieldOptions[$placeHolderOptionName = $this->getPlaceholderOptionName()]) && false === $formFieldOptions['required']) { $formFieldOptions[$placeHolderOptionName] = 'form.label.empty_value'; } $formFieldOptions['attr']['field_type'] = $metadata['fieldType']; $formFieldOptions['attr']['field_css_class'] = $metadata['class']; $formFieldOptions['attr']['field_help'] = $metadata['help']; $formFieldType = $this->useLegacyFormComponent() ? $metadata['fieldType'] : $this->getFormTypeFqcn($metadata['fieldType']); $builder->add($name, $formFieldType, $formFieldOptions); } }
public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('username', null, array('read_only' => 'true')); $builder->add('email', 'email', array('label' => 'form.email', 'read_only' => 'true', 'translation_domain' => 'FOSUserBundle')); $builder->add('firstName', 'text', array('label' => 'form.firstName', 'read_only' => 'true', 'translation_domain' => 'FOSUserBundle')); $builder->add('surname', 'text', array('label' => 'form.surname', 'read_only' => 'true', 'translation_domain' => 'FOSUserBundle')); $builder->add('birthdate', 'birthday', array('required' => false, 'read_only' => 'true', 'format' => 'yyyy-MM-dd', 'widget' => 'single_text', 'label' => 'form.birthdate', 'translation_domain' => 'FOSUserBundle')); $builder->add('mobile', null, array('required' => false, 'read_only' => 'true', 'label' => 'form.mobile', 'translation_domain' => 'FOSUserBundle')); $user = $this->getUser(); $allRoles = $this->translateRoles($builder->getOption('available_roles')); $securityHelper = $this->securityHelper; $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($user, $allRoles, $securityHelper) { $person = $event->getData(); $form = PersonResumeFormType::populateCountryStateCity($person, $event->getForm()); $roles = PersonResumeFormType::filterRoles($person, $form, $allRoles, $securityHelper); }); }
/** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $entity = $options['entity']; $view = $options['view']; $entityConfig = $this->configurator->getEntityConfiguration($entity); $entityProperties = $entityConfig[$view]['fields']; foreach ($entityProperties as $name => $metadata) { $formFieldOptions = $metadata['type_options']; if ('association' === $metadata['type']) { $toManyAssociations = array(ClassMetadata::ONE_TO_MANY, ClassMetadata::MANY_TO_MANY); if (in_array($metadata['associationType'], $toManyAssociations)) { $formFieldOptions['attr']['multiple'] = true; } // supported associations are displayed using advanced JavaScript widgets $formFieldOptions['attr']['data-widget'] = 'select2'; } if ('collection' === $metadata['fieldType']) { if (!isset($formFieldOptions['allow_add'])) { $formFieldOptions['allow_add'] = true; } if (!isset($formFieldOptions['allow_delete'])) { $formFieldOptions['allow_delete'] = true; } if (version_compare(Kernel::VERSION, '2.5.0', '>=')) { if (!isset($formFieldOptions['delete_empty'])) { $formFieldOptions['delete_empty'] = true; } } } elseif ('checkbox' === $metadata['fieldType'] && !isset($formFieldOptions['required'])) { $formFieldOptions['required'] = false; } if (!isset($formFieldOptions['required'])) { if (null !== ($guessRequired = $this->guesser->guessRequired($builder->getOption('data_class'), $name))) { $formFieldOptions['required'] = $guessRequired->getValue(); } } $formFieldOptions['attr']['field_type'] = $metadata['fieldType']; $formFieldOptions['attr']['field_css_class'] = $metadata['class']; $formFieldOptions['attr']['field_help'] = $metadata['help']; $formFieldType = $this->useLegacyFormComponent() ? $metadata['fieldType'] : $this->getFormTypeFqcn($metadata['fieldType']); $builder->add($name, $formFieldType, $formFieldOptions); } }
/** * Assert that the form element has an inner type of type $typeClass and * the specified options with their values. * * @param FormBuilderInterface $element * @param string $typeClass FQN class * @param array $options keys are option names, values the * expected option values */ private function assertFormType(FormBuilderInterface $element, $typeClass, array $options) { $type = $element->getType()->getInnerType(); $this->assertInstanceOf($typeClass, $type); foreach ($options as $option => $expected) { $this->assertEquals($expected, $element->getOption($option), "Option '{$option}' does not have the expected value '" . serialize($expected) . "'"); } }
/** * @param mixed $data * @param FormBuilderInterface $form * @return array */ public function fillDefaultData($data, FormBuilderInterface $form) { if (!$data) { $data = []; } foreach ($this->getLocales() as $locale) { $localeId = $locale->getId(); if (!array_key_exists($localeId, $data)) { if ($locale->getParentLocale()) { $data[$localeId] = new FallbackType(FallbackType::PARENT_LOCALE); } else { $data[$localeId] = new FallbackType(FallbackType::SYSTEM); } if ($form->hasOption('default_callback')) { /** @var \Closure $defaultCallback */ $defaultCallback = $form->getOption('default_callback'); $data[$localeId] = $defaultCallback($data[$localeId]); } } } return $data; }
/** * @param FormBuilderInterface $builder * * @return FormBuilderInterface */ private function createPositionTab(FormBuilderInterface $builder) { $source = $builder->getOption('router')->generate('clastic_backoffice_menu_item_tree', ['menuId' => $builder->getData()->getMenu()->getId()]); return $this->createTab($builder, 'position_tab', ['label' => 'Position'])->add('position', TreeType::class, ['source' => $source]); }
/** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $label = $builder->getOption('label', false); $builder->add('name', null, ['label' => $label ? 'Nazwa pojazdu' : false, 'attr' => ['placeholder' => 'Nazwa pojazdu']])->add('photoUrl', UrlType::class, ['label' => $label ? 'URL obrazka' : false, 'attr' => ['placeholder' => 'Podaj adres URL obrazka']])->add('description', TextareaType::class, ['label' => $label ? 'Opsi pojazdu' : false, 'attr' => ['placeholder' => 'Podaj opis pojazdu']])->add('brand', null, ['label' => $label ? 'Marka pojazdu' : false, 'attr' => ['placeholder' => 'Marka pojazdu']])->add('engine', null, ['label' => $label ? 'Silnik pojazdu' : false, 'attr' => ['placeholder' => 'Moc silnika']])->add('year', null, ['label' => $label ? 'Rok produkcji' : false, 'attr' => ['placeholder' => 'Rok produkcji']])->add('amount', null, ['label' => $label ? 'Ilośc dostępnych pojazdów' : false, 'attr' => ['placeholder' => 'Ilość dostępnych pojazdów']])->add('price', null, ['label' => $label ? 'Koszt wynajmu' : false, 'attr' => ['placeholder' => 'Koszt wynajmu (jeden dzień)']]); }