예제 #1
0
 protected function canHandle(Component $component, WrappedEntity $wrappedEntity)
 {
     if (!$component instanceof TextBase) {
         return FALSE;
     }
     if (!$wrappedEntity->hasField($component->getName())) {
         return FALSE;
     }
     $mapping = $wrappedEntity->getMetadata()->getFieldMapping($component->getName());
     return in_array($mapping['type'], ['date', 'time', 'datetime']);
 }
예제 #2
0
 /**
  * @param ClassMetadata $targetEntityMetadata
  * @return array
  */
 protected function processIdentifier(ClassMetadata $targetEntityMetadata)
 {
     $identifierFields = $targetEntityMetadata->identifier;
     $this->identifierFields = array_filter($identifierFields, function ($value) use($targetEntityMetadata) {
         if (isset($targetEntityMetadata->associationMappings[$value])) {
             $associationMapping = $targetEntityMetadata->getAssociationMapping($value);
             return $this->wrappedEntity->getMetadata()->getName() != $associationMapping['targetEntity'];
         }
         return TRUE;
     });
     return $identifierFields;
 }
예제 #3
0
 /**
  * @param WrappedEntity $wrappedEntity
  * @param Component $component
  */
 protected function canHandle(WrappedEntity $wrappedEntity, Component $component)
 {
     if (!$component instanceof Container && !$component instanceof MultiChoiceControl) {
         return FALSE;
     }
     if (!$wrappedEntity->getMetadata()->hasAssociation($component->getName())) {
         return FALSE;
     }
     if (!$wrappedEntity->isToManyAssociation($component->name)) {
         return FALSE;
     }
     return TRUE;
 }
예제 #4
0
 public function save(WrappedEntity $wrappedEntity, Component $component, Mapper $mapper)
 {
     if (!$component instanceof Container && !$component instanceof IControl) {
         return FALSE;
     }
     if ($component instanceof MultiChoiceControl) {
         return FALSE;
     }
     $meta = $wrappedEntity->getMetadata();
     if (!($association = $this->getAssociationMetadata($meta, $component->name))) {
         return FALSE;
     }
     if ($component instanceof Container) {
         $relatedEntity = $this->getRelatedEntity($wrappedEntity, $component, $association);
         if ($relatedEntity) {
             $mapper->saveValues($component, $relatedEntity);
             $mapper->execute(function () use($wrappedEntity, $component, $relatedEntity) {
                 $wrappedEntity->getEntityManager()->persist($relatedEntity);
                 $wrappedEntity->setValue($component->getName(), $relatedEntity);
             });
             $mapper->runValidation(function (ValidatorInterface $validator) use($wrappedEntity, $component, $relatedEntity) {
                 return $validator->validatePropertyValue($wrappedEntity, $component->getName(), $relatedEntity);
             }, $component->getForm());
         }
     } elseif ($component instanceof IControl) {
         if ($component->isOmitted()) {
             return TRUE;
         }
         $value = $component->getValue() ?: NULL;
         if ($wrappedEntity->hasAssociation($component->name) && $value && !is_object($value)) {
             $association = $wrappedEntity->getMetadata()->getAssociationMapping($component->name);
             $repository = $wrappedEntity->getEntityManager()->getRepository($association['targetEntity']);
             $value = $repository->find($value);
         }
         $mapper->execute(function () use($wrappedEntity, $component, $value) {
             $wrappedEntity->setValue($component->name, $value);
         });
         $mapper->runValidation(function (ValidatorInterface $validator) use($wrappedEntity, $component, $value) {
             return $validator->validatePropertyValue($wrappedEntity->getEntity(), $component->name, $value);
         }, $component);
     }
     return TRUE;
 }