Symfony表单适用于可翻译的Doctrine实体。

3

我有一个Doctrine实体,它使用可翻译的Doctrine扩展进行了翻译:

<?php
namespace Myapp\ProductBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Gedmo\Translatable\Translatable;

/**
 * @ORM\Table(name="product_property")
 * @ORM\Entity()
 * @Gedmo\TranslationEntity()
 */
class Property implements Translatable
{
    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @Gedmo\Translatable
     * @ORM\Column(name="name", type="string", length=255)
     */
    private $name;

    /**
     * @ORM\OneToMany(
     *   targetEntity="PropertyTranslation",
     *   mappedBy="object",
     *   cascade={"persist", "remove"}
     * )
     */
    private $translations;

    /**
     * @Gedmo\Locale
     * Used locale to override Translation listener`s locale
     * this is not a mapped field of entity metadata, just a simple property
     */
    private $locale;


    public function setTranslatableLocale($locale)
    {
        $this->locale = $locale;
    }

    public function getTranslations()
    {
        return $this->translations;
    }

    public function addTranslation(PropertyTranslation $t)
    {
        if (!$this->translations->contains($t)) {
            $this->translations[] = $t;
            $t->setObject($this);
        }
    }
}

现在,我想要用我的翻译中可用的每种语言呈现一个带有“名称”属性的输入字段的表单。
最好如何完成?

你尝试过创建一个继承自AbstractType的PropertyType类来构建你的表单吗?你可以指定translation_domain。在这里查看:http://symfony.com/doc/master/reference/forms/types/form.html#translation-domain - Hyunmin Kim
是的,translation_domain 指定了表单标签使用的翻译域。这里的问题是如何添加字段,让我一次输入 name 字段的多个翻译,例如 3 个字段:“Name - 英语”,“Name - 德语”,“Name - 法语”。 - phidah
是的,您可以使用 translation_domain 来指定翻译文件。FOSUserBundle 似乎非常好地实现了这个系统。FormType:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Form/Type/RegistrationFormType.php 翻译:https://github.com/FriendsOfSymfony/FOSUserBundle/tree/master/Resources/translations - Hyunmin Kim
我不是在尝试翻译网站上的表单标签或其他静态文本。我正在尝试保存表单数据 - 即Doctrine保存在数据库中的内容。请参见我的答案 - https://dev59.com/NWzXa4cB1Zd3GeqPW7kV#14125419 - phidah
1个回答

4

这个捆绑包处于低维护状态(可能不再维护)。不确定在这种冻结状态下使用它是否是一个好主意。 - Tsounabe
看起来它仍在维护中;当前最后提交是2019年6月 - Kamafeather
您可以尝试使用我的“实体本地化”捆绑包。https://github.com/Warxcell/EntityTranslationsBundle - CappY
https://github.com/a2lix/TranslationFormBundle在2021年仍然与Symfony 5兼容。 - Alex Babak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接