2012-04-17 102 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