public function postPersist(LifecycleEventArgs $args) { $layoutBlock = $args->getEntity(); if ($layoutBlock instanceof LayoutBlock) { if ($contentObject = $layoutBlock->getSnapshotContent()) { $contentObject = $this->serializer->deserialize($contentObject, $layoutBlock->getClassType(), 'json'); $em = $args->getObjectManager(); try { $em->persist($contentObject); $contentObject = $em->merge($contentObject); $reflection = new \ReflectionClass($contentObject); foreach ($reflection->getProperties() as $property) { $method = sprintf('get%s', ucfirst($property->getName())); if ($reflection->hasMethod($method) && ($var = $contentObject->{$method}())) { if ($var instanceof ArrayCollection) { foreach ($var as $v) { $em->merge($v); } } } } } catch (EntityNotFoundException $e) { $em->detach($contentObject); $classType = $layoutBlock->getClassType(); $contentObject = new $classType(); $em->persist($contentObject); } $em->flush($contentObject); $layoutBlock->setObjectId($contentObject->getId()); $em->persist($layoutBlock); $em->flush($layoutBlock); } } }