使用带有奏鸣曲管理员的knp可翻译学说扩展。
如果您的翻译实体包含也被翻译的实体集合,是否可以将翻译后的项目显示在sonata_type_collection中?
:例如CategoryEntity
与ArticleEntity
具有oneToMany关联,两者都配置了转换表。在CategoryAdmin
中,定义了类型为articles
的属性sonata_type_collection
,但没有显示任何值(翻译肯定会起作用)。
答案 0 :(得分:0)
我经历了这种情况,并最终得到了解决方案,
只需在prePersist()和preUpdate()上添加 mergeNewTranslations()
示例代码如下,
<?php
namespace Website\CategoryBundle\Admin;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Form\FormMapper;
class CategoryAdmin extends AbstractAdmin
{
/**
* @inheritdoc
*/
public function configureFormFields(FormMapper $formMapper)
{
...
$formMapper
->with('config.label_category', ['class' => 'col-md-12'])
->add('name', TextType::class, [
'label' => 'config.label_name'
]
)
->end()
->with('config.label_article', ['class' => 'col-md-12'])
->add('articles', CollectionType::class,
[
'label' => false,
'required' => false,
'by_reference' => false,
],
[
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'position',
]
)
->end()
}
/**
* @inheritdoc
*/
public function prePersist($obj)
{
foreach ($obj->getArticles() as $article) {
// $article->translate();
$article->mergeNewTranslations();
}
}
/**
* @inheritdoc
*/
public function preUpdate($obj)
{
foreach ($obj->getArticles() as $article) {
// $article->translate();
$article->mergeNewTranslations();
}
}
}