EasyAdmin 3: вложенные формы (Callection в другой коллекции)

#php #symfony #easyadmin3

#php #symfony #easyadmin3

Вопрос:

Я использую EasyAdmin 3.

Я создаю менеджер рассылок с Symfony 5. Мои объекты построены как таковые.

  • Рассылка (ManyToOne => NewsletterItem)
    • NewsletterItem (ManyToOne => NewsletteItemSub)
      • Newsletterteitemsub

В EasyAdmin я смог добавить элемент Newsletter в Newsletter. Но я не знаю, как добавить NewsletterItemSub в NewsletterItem в EasyAdmin.

У кого-нибудь есть идея?

Мой текущий код :

 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

Комментарии:

1. Спасибо, я уже нашел это. Это работает отлично.