使用Atlantic18/DoctrineExtensions translatable feature时,我无法使用后备值。
我想知道每个可翻译属性(实体中带有@Gedmo\Translatable
批注的属性)我获得的值是后备值还是真实值。
我试图:
使用postLoad
event对其进行管理,但这确实很丑陋
处理多个可翻译属性时会很混乱
和多个实体:
<?php
namespace AppBundle\EventListener;
use AppBundle\Entity\MyEntity;
use Doctrine\ORM\Event\LifecycleEventArgs;
class MyEntityListener
{
public function postLoad(LifecycleEventArgs $args)
{
$entity = $args->getObject();
if (!$entity instanceof MyEntity) {
return;
}
$em = $args->getObjectManager();
if ($entity->getName() === null) {
$entity->setName($em->getRepository(MyEntity::class)->findFallbackValueForField($entity->getId(), 'name'));
$entity->setIsNameFallback(true);
}
}
}
使用custom AST walkers并获得所需的效果 数据以一种更干净的方式。但是,我不知道如何添加 我的实体上的字段,而无需保留信息,因为它取决于语言环境。
有人可以向我解释一下,如果值是后备,我如何才能知道实体的每个属性?
似乎我的问题与问题How to check if record has been translated ? #1439有关。