/** * {@inheritdoc} */ public function configure($name, array $options, array $metadata, FormConfigInterface $parentConfig) { // The implementation uses a FormTypeGuesserInterface instance in order // to guess the "required" value from different sources (PHPdoc, // validation or doctrine metadata, etc.) $guessed = $this->guesser->guessRequired($parentConfig->getDataClass(), $name); if (null !== $guessed) { $options['required'] = $guessed->getValue(); } return $options; }
/** * {@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); } }
/** * {@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); } }