从http://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/translatable.md#personal-translations
考虑Category实体及其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';
}
}
你看到了解决方案吗?
感谢。
答案 0 :(得分: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以便于使用。
答案 1 :(得分:0)
你必须写一些技巧。
这是我的解决方案的一部分(适用于SonataAdminBundle),https://gist.github.com/2116290 但我还没有设法让它工作。它真的可以帮助你。
如果你找到了什么,请告诉我。