/**
  * {@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;
 }