我使用教义翻译来翻译我的某些实体。例如:我有一个实体“ Category”,这个实体有一个可翻译字段-“名称”:
/**
* @ORM\Entity(repositoryClass="AppBundle\Repository\CategoryRepository")
* @ORM\Table(name="categories")
*/
class Category implements EntityUploadImageInterface, Translatable
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @Gedmo\Translatable
* @ORM\Column(type="string", length=100)
*
* @var string
*/
private $name = '';
/// ...
}
这是一项很好的工作,但是当我切换到另一种语言并尝试使用可翻译字段时,由于该实体的可翻译记录不存在,我给出了空值。
问题:如果可翻译记录不存在,如何获取默认值字段?
答案 0 :(得分:0)
您可以使用事件。
/**
* @ORM\Entity(repositoryClass="AppBundle\Repository\CategoryRepository")
* @ORM\Table(name="categories")
* @ORM\HasLifecycleCallbacks
*/
class Category implements EntityUploadImageInterface, Translatable
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @Gedmo\Translatable
* @ORM\Column(type="string", length=100)
*
* @var string
*/
private $name = '';
/** @ORM\PostLoad */
public funcion setDefaultName()
{
if(empty($this->getName)) {
$this->setName('some default value');
}
}
/// ...
}