EasyAdmin 3:嵌套表单(另一个集合中的调用)

Posted

技术标签:

【中文标题】EasyAdmin 3:嵌套表单(另一个集合中的调用)【英文标题】:EasyAdmin 3 : Nested forms (Callection in another Collection) 【发布时间】:2021-07-09 05:59:12 【问题描述】:

我使用 EasyAdmin 3。

我正在使用 Symfony 5 创建一个时事通讯管理器。我的实体就是这样构建的。

时事通讯(ManyToOne => NewsletterItem) 通讯项目(ManyToOne => NewsletteItemSub) NewsletteItemSub

在 EasyAdmin 中,我能够在 Newsletter 中添加 NewsletterItem。但我不知道如何在 EasyAdmin 的 NewsletterItem 中添加 NewsletterItemSub。

有人有想法吗?

我当前的代码:

CollectionField::new('newsletterItems', 'Newsletter Items')
     ->allowAdd()
     ->allowAdd()
     ->setEntryIsComplex(false)
     ->setEntryType(NewsletterItemType::class)
     ->showEntryLabel(false)
     ->setFormTypeOptions([
         by_reference' => false
        ]
     )
     ->hideOnIndex(),

【问题讨论】:

【参考方案1】:

创建 NewsletterItemSubType 表单类并将其嵌入到 NewsletterItemType

类似这样的:

<?php
#...
class NewsletterItemType extends AbstractType

    public function buildForm(FormBuilderInterface $builder, array $options): void
    
        #...

        $builder->add('tags', CollectionType::class, [
            'entry_type' => NewsletteItemSubType::class,
            'entry_options' => ['label' => false],
        ]);
    

    #...

https://symfony.com/doc/current/form/form_collections.html

【讨论】:

谢谢,我已经找到了。效果很好。

以上是关于EasyAdmin 3:嵌套表单(另一个集合中的调用)的主要内容,如果未能解决你的问题,请参考以下文章

EasyAdmin 3 - 具有嵌套形式的 CRUD

自定义嵌套表单类型 easyadmin

EasyAdmin 3:限制登录用户的数据仍然在表单下拉列表中显示其他数据

访问视图中的嵌套表单字段(嵌入表单集合)

如何在 Symfony EasyAdmin 3 中创建密码输入类型

使用 EasyAdmin 3.3 过滤器的自动完成选项