2013-01-02 55 views
3

我已經使用了Translatable Doctrine extension翻譯學說實體:Symfony的形式可翻譯主義實體

<?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); 
     } 
    } 
} 

現在,我想呈現形式輸入字段的「姓名」財產在我的翻譯中可用的每種語言。

這最好的做法是什麼?

+0

你嘗試創建一個擴展AbstractType建立自己的形式的屬性類型類?您可以指定translation_domain。請點擊此處:http://symfony.com/doc/master/reference/forms/types/form.html#translation-domain –

+0

是的,'translation_domain'指定用於表單標籤的翻譯域。這裏的問題是我如何添加字段,讓我一次輸入'name'字段的多個翻譯,例如3個字段:「名稱 - 英語」,「名稱 - 德語」,「名稱 - 法語」。 – phidah

+0

是的,您可以使用'translate_domain'來指定翻譯文件。 FOSUserBundle似乎很好地實現了這個系統。 FormType:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Form/Type/RegistrationFormType.php翻譯:https://github.com/FriendsOfSymfony/FOSUserBundle/tree/master/Resources/translations –

回答