/** * {@inheritdoc} */ public function build(FormBuilder $form) { $metaData = $this->doctrineService->getEntityManager()->getClassMetadata($this->entityName); foreach ($metaData->getFieldNames() as $fieldName) { if (!$metaData->isIdentifier($fieldName) && (!$this->filter || in_array($fieldName, $this->filter))) { $this->createField($form, $metaData, $fieldName); } } foreach ($metaData->getAssociationNames() as $fieldName) { if (!$metaData->isIdentifier($fieldName) && (!$this->filter || in_array($fieldName, $this->filter))) { $this->createAssociationField($form, $metaData, $fieldName); } } }
/** * {@inheritdoc} */ public function decode($data) { $entity = $this->entity; if (!$entity) { $entity = new $this->entityName(); } $metaData = $this->doctrineService->getEntityManager()->getClassMetadata($this->entityName); foreach ($data as $kData => $vData) { $value = $vData; if ($metaData->hasAssociation($kData)) { $this->decodeAssociation($metaData, $entity, $kData, $value); } else { if ($metaData->hasField($kData) || method_exists($entity, 'set' . ucfirst($kData))) { $this->decodeField($entity, $kData, $value); } } } return $entity; }