/** * {@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']; // Configure options using the list of registered type configurators: foreach ($this->configurators as $configurator) { if ($configurator->supports($metadata['fieldType'], $formFieldOptions, $metadata)) { $formFieldOptions = $configurator->configure($name, $formFieldOptions, $metadata, $builder); } } $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); } }
/** * Merges all the information about the fields associated with the given view * to return the complete set of normalized field configuration. * * @param string $view * @param array $entityConfiguration * * @return array The complete field configuration */ protected function normalizeFieldsConfiguration($view, $entityConfiguration) { $fieldsConfiguration = $entityConfiguration[$view]['fields']; $configuration = parent::normalizeFieldsConfiguration($view, $entityConfiguration); //override the sortable foreach ($fieldsConfiguration as $fieldName => $fieldConfiguration) { if (isset($fieldConfiguration['sortable'])) { $configuration[$fieldName]['sortable'] = $fieldConfiguration['sortable']; } } return $configuration; }
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']) { // *-to-many associations are not supported yet $toManyAssociations = array(ClassMetadata::ONE_TO_MANY, ClassMetadata::MANY_TO_MANY); if (in_array($metadata['associationType'], $toManyAssociations)) { continue; } // 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(\Symfony\Component\HttpKernel\Kernel::VERSION, '2.5.0', '>=')) { if (!isset($formFieldOptions['delete_empty'])) { $formFieldOptions['delete_empty'] = true; } } } elseif ('checkbox' === $metadata['fieldType'] && !isset($formFieldOptions['required'])) { $formFieldOptions['required'] = false; } $formFieldOptions['attr']['field_type'] = $metadata['fieldType']; $formFieldOptions['attr']['field_css_class'] = $metadata['class']; $formFieldOptions['attr']['field_help'] = $metadata['help']; $builder->add($name, $metadata['fieldType'], $formFieldOptions); } }
/** * @expectedException InvalidArgumentException * @expectedExceptionMessage Entity "UnmanagedEntity" is not managed by EasyAdmin. */ public function testAccessingAnUnmanagedEntity() { $backendConfig = array('easy_admin' => array('entities' => array('AppBundle\\Entity\\TestEntity'))); $configurator = new Configurator($backendConfig); $configurator->getEntityConfiguration('UnmanagedEntity'); }