2012-04-17 97 views
2

考慮範疇實體及其CategoryTranslation實體從:http://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/translatable.md#personal-translations可翻譯的實體和形式多種翻譯

我想創建輕鬆地添加翻譯的形式。

我有一個功能性的解決方案,這是有用的,因爲與TranslationType部分通用。 但它僅限於更新。( - >抽象類使用)

class TranslationType extends AbstractType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder 
      ->add('locale') 
      ->add('field') 
      ->add('content') 
     ; 
    } 

    public function getDefaultOptions() 
    { 
     return array(
      'data_class' => 'Gedmo\Translatable\Entity\MappedSuperclass\AbstractPersonalTranslation' 
     ); 
    } 

    public function getName() 
    { 
     return 'translation'; 
    } 
} 

class CategoryType extends AbstractType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder 
      ->add('title') 
      ->add('description') 
      ->add('translations', 'collection', array(
       'type' => new TranslationType() 
      )) 
     ; 
    } 

    public function getDefaultOptions() 
    { 
     return array(
      'data_class' => 'Category' 
     ); 
    } 

    public function getName() 
    { 
     return 'categ'; 
    } 
} 

你看到的解決方案?

謝謝。

回答

2

答案:

class CategoryType extends AbstractType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder 
      ->add('title') 
      ->add('description') 
      ->add('translations', 'collection', array(
       'type' => new TranslationType(), 
       'allow_add' => true, 
       'by_reference' => false, 
       'options' => array(
        'data_class' => 'XXX\YYYBundle\Entity\CategoryTranslation' 
       ) 
      )) 
     ; 
    } 

    public function getDefaultOptions() 
    { 
     return array(
      'data_class' => 'XXX\YYYBundle\Entity\Category' 
     ); 
    } 

    public function getName() 
    { 
     return 'categ'; 
    } 
} 

我做了一個專門的包https://github.com/a2lix/TranslationFormBundle以方便使用。

0

你必須寫幾個技巧。

這裏是我的解決方案(這是爲SonataAdminBundle)的部分,https://gist.github.com/2116290 但我沒有設法使它的工作。它真的可以給你一個提升。

讓我知道,如果你找到一些東西。

+0

是的,謝謝,我已經找到你的Gist在我的谷歌搜索... 我會問別人的網站,並花時間重新調查。 我們隨時跟進 – webda2l 2012-04-19 07:52:22

+0

如果您願意,我在一週內找到了解決方案。 – webda2l 2012-04-22 20:49:57

+0

謝謝,gedmo給我發送了一封包含您的解決方案的電子郵件。偉大的工作夥伴;-) – 2012-04-23 07:40:24