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);
}
}
}