原则可翻译:如果不存在可翻译字段,如何返回字段的默认值

时间:2018-08-14 23:25:34

标签: php symfony doctrine-extensions

我使用教义翻译来翻译我的某些实体。例如:我有一个实体“ 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 = '';

    /// ...
}

这是一项很好的工作,但是当我切换到另一种语言并尝试使用可翻译字段时,由于该实体的可翻译记录不存在,我给出了空值。

问题:如果可翻译记录不存在,如何获取默认值字段?

1 个答案:

答案 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');
        }
    }

    /// ...
}