2012-04-17 6 views
2

からカテゴリーエンティティとそのCategoryTranslationエンティティを考えてみましょう。翻訳可能実体と形

私は機能的な解決策を持っています。これは、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

はい、ありがとうございます、私は既にGoogleの検索中にあなたのGistを見つけていました... 私は他のウェブサイトに尋ねて、再調査する時間を取るでしょう。 私たちは同行します – webda2l

+0

あなたが望むなら、その週に解決策を見つけました。 – webda2l

+0

ありがとう、gedmo私にあなたのソリューションと電子メールを送信します。素晴らしい仕事の相手;-) –

関連する問題