2

次の Category エンティティとその 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';
    }
}

解決策が見えますか?

ありがとう。

4

2 に答える 2

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を作成しました。

于 2012-04-22T20:49:07.830 に答える
0

あなたはいくつかのトリックを書かなければなりません。

これが私のソリューションの一部です(SonataAdminBundle用でした)、https: //gist.github.com/2116290 しかし、私はまだそれを機能させることができませんでした。それは本当にあなたに後押しを与えることができます。

何か見つけたら教えてください。

于 2012-04-18T13:37:51.817 に答える