可翻译的实体和形式多种翻译
问题描述:
考虑范畴实体及其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';
}
}
你看到的解决方案?
谢谢。
答
答案:
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以方便使用。
答
你必须写几个技巧。
这里是我的解决方案(这是为SonataAdminBundle)的部分,https://gist.github.com/2116290 但我没有设法使它的工作。它真的可以给你一个提升。
让我知道,如果你找到一些东西。
是的,谢谢,我已经找到你的Gist在我的谷歌搜索... 我会问别人的网站,并花时间重新调查。 我们随时跟进 – webda2l 2012-04-19 07:52:22
如果您愿意,我在一周内找到了解决方案。 – webda2l 2012-04-22 20:49:57
谢谢,gedmo给我发送了一封包含您的解决方案的电子邮件。伟大的工作伙伴;-) – 2012-04-23 07:40:24