【问题标题】:Sonata Admin display knp translatable translation in sonata_type_collectionSonata Admin 在 sonata_type_collection 中显示 knp 可翻译翻译
【发布时间】:2017-02-20 07:54:55
【问题描述】:

在奏鸣曲管理员中使用 knp 可翻译学说扩展。

当您的翻译实体包含一组也已翻译的实体时,是否可以让已翻译项目出现在 sonata_type_collection 中?

:例如CategoryEntityArticleEntity 具有 oneToMany 关联,两者都配置了转换表。在CategoryAdmin 中,定义了articles 类型为sonata_type_collection 的属性,但是没有出现任何值(翻译肯定可以正常工作)。

【问题讨论】:

    标签: symfony sonata-admin sonata


    【解决方案1】:

    我经历过这种情况并最终得到了这个解决方案,
    只需在 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(); 
            }
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-21
      • 2015-11-06
      • 2018-07-08
      • 2018-01-20
      • 2015-02-08
      • 2015-10-09
      • 1970-01-01
      • 2015-03-05
      相关资源
      最近更新 更多