1

I use Doctrine Translatable for tranlate of my some entity. For example: I have entity "Category" and this entity has one translatable field - "name":

/**
 * @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 = '';

    /// ...
}

It is good work, but when I switch to another language and try to use translatable field, I give empty value because translatable record for this entity is not exists.

Question: How can I get default value field if translatable record is not exists?

1 Answers1

0

You can use events.

/**
 * @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');
        }
    }

    /// ...
}
zen
  • 980
  • 6
  • 18
  • I don't want use hardcore default value. I want to use value from default language in case when entity is not translatable – Nikita Glazzz Aug 18 '18 at 14:45