private function createMetadata($className, Metadata $metadata = null) { $parentClass = get_parent_class($className); if ($parentClass) { $parentMetadata = $this->createMetadata($parentClass, $metadata); if ($parentMetadata !== null) { $metadata = $parentMetadata; } } $metadataArray = $this->getMetadataArray(); if (array_key_exists($className, $metadataArray)) { if ($metadata === null) { $metadata = new Metadata(); } $metadata->setClass($className); if (isset($metadataArray[$className]['properties']) && is_array($metadataArray[$className]['properties'])) { $properties = $metadataArray[$className]['properties']; foreach ($properties as $name => $propertyData) { $property = new Property(); $property->setName($name); if (isset($propertyData['strategy'])) { $property->setStrategy($propertyData['strategy']); } $metadata->addProperty($property); } } return $metadata; } return null; }
public function translate($entity, Metadata $metadata, Property $property, $locale) { if ($locale === $this->defaultLocale) { return; } $accessor = PropertyAccess::createPropertyAccessor(); /** @var Translation $translation */ $translation = $this->getRepository()->findOneBy(['class' => $metadata->getClass(), 'refId' => $entity->getId(), 'property' => $property->getName(), 'locale' => $locale]); $value = ''; if ($translation !== null && $translation->getTranslation() !== null) { $value = $translation->getTranslation(); } $accessor->setValue($entity, $property->getName(), $value); }