public function createBuilder($type = 'form', $data = null, array $options = array(), FormBuilderInterface $parent = null) { $name = $type instanceof FormTypeInterface || $type instanceof ResolvedFormTypeInterface ? $type->getName() : $type; return $this->createNamedBuilder($name, $type, $data, $options, $parent); }
/** * Obtains any form metadata from the entity and adds itself to the form * @param $entity * @param $form * @return */ public function createFormBuilder($entity, $data = null, array $options = array()) { // Build the $form $formBuilder = $this->factory->createBuilder('form', $data, $options); // Read the entity meta data and add to the form if (empty($this->drivers)) { return $formBuilder; } // Look to the readers to find metadata foreach ($this->drivers as $driver) { $metadata = $driver->getMetadata($entity); if (!empty($metadata)) { break; } } if (empty($metadata)) { return $formBuilder; } // Configure the form $fields = $metadata->getFields(); foreach ($fields as $field) { // TODO: Detect "new x()" in field value or type option for AbstractType creation // TODO: Detect references to "%service.id%" for service constructor dependency $formBuilder->add($field->name, $field->value, $field->options); } return $formBuilder; }