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']); }
/** * @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; }
/** * @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; }
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; }