Нужен совет по созданию формы сущности, связанной с Symfony4 easy_admin

Я новичок в symfony. Сейчас у меня новый проект и мне нужен совет, какую технологию выбрать. Я заметил, что symfony4 почти во всех демках устанавливает easy_admin, и это выглядит хорошим выбором. Но вот уже несколько дней я борюсь с некоторыми проблемами и отсутствием документации, информации. Итак, я хочу знать - возможна ли моя идея в простом админке простым способом (не пишу почти все на заказ), и я просто не могу найти подходящую документацию, или мне нужно выбрать другое решение (есть предложения?)

Итак, у меня есть база данных с одной таблицей, в которой более 10 связанных таблиц. Когда я создаю новый базовый объект, я хочу добавить все связанные объекты в одно окно. И именно добавлять, а не выбирать из уже готовых, потому что мне нужно сделать работу в одной форме, а не перемещаться между более чем 10 формами, чтобы сделать одну запись (заказчик не заботится об отношениях). Могу ли я создать базовую запись и при редактировании добавить все связанные объекты. А связанные сущности могут быть практически любого типа — OneToOne OnetoMany ManytoMany.

Поэтому мне очень нужен совет, как можно выполнить эту работу, потому что я пробовал несколько способов в отношениях, и я могу выбирать только из уже вставленных записей, но не могу добавлять новые. Все связанные объекты имеют несколько полей ввода - для этого необходимо сгенерировать полную форму.


person Tilo    schedule 29.01.2018    source источник
comment
Я хочу знать 2 - возможно ли это, потому что ни в одной документации это не раскрывается. Так не знаю, какой именно код вам нужен?   -  person Tilo    schedule 29.01.2018


Ответы (2)


Создан пример проекта, доступный на github Web Forest. полностью объяснено в официальном руководстве или демоверсии EasyAdmin.

Цель проекта № 1: добиться вставки всех связанных сущностей из одной формы вставки и/или редактирования леса. Все типы — OneToOne, OneToMany, ManyToMany. Объясните новичкам, что именно мы делаем не так и как сделать понятнее.

Пожалуйста, не стесняйтесь - комментируйте, вносите изменения, добавляйте больше функций.

person Tilo    schedule 30.01.2018

Вам нужно создать пользовательский класс формы и указать его в файле конфигурации yaml с помощью параметра entry_type. Например, представьте, что у сущности User есть связанная сущность UserSettings (с полями code и value), и вы хотите редактировать эти настройки прямо в форме редактирования пользователя:

Класс формы:

class UserSettingsType extends AbstractType
{

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => UserSettings::class
        ]);
    }

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('code')
            ->add('value');
    }
}

Конфигурация YAML:

easy_admin:
    entities:
        User:
            class: App\Entity\User
            edit:
                fields:
                    - ...
                    - { property: 'settings', type: 'collection', type_options: { entry_type: 'App\Form\EasyAdmin\UserSettingsType' , ... }}

Я наткнулся на это решение в этом вопросе

person kudlohlavec    schedule 14.10.2019