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 回答