Symfony Forms с 2 базами данных - PullRequest
0 голосов
/ 01 июля 2019

Я не смог найти свой конкретный случай в интернете и поэтому решил написать свой вопрос.

У меня есть форма для создания объекта Member. Этот объект-член имеет ссылку на объект приложения. Оба сохраняются в 2 разных базах данных.

Создание объекта Member не проблема, только когда я редактирую и заполняю форму, я сталкиваюсь с ошибкой ->

Сущность типа «Приложение» передается в поле выбора должно быть управляемым. Может быть, вы забыли сохранить его в менеджере сущностей

Вот мой код формы

/**
 * @param FormBuilderInterface $builder
 * @param array $options
 */
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('membberName', null, array('label' => false))
        ->add('memberDescription', TextareaType::class, array('label' => false))
        ->add('memberVisible', null, array('label' => false))
        ->add('memberApp', EntityType::class, [
            'label' => false,
            'class' => Application::class,
            'choice_label' => function (Application $application) {
                return sprintf('(%d) %s', $application->getAppId(), $application->getAppurlUrl());
            },
            'choices' => $this->applicationRepository->getAll(),

        ])
        ->add('Save', SubmitType::class, [
            'attr' => ['class' => 'create-button']
        ]);

}

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

Подведем итог: вызов страницы создания представления и нажатие на кнопку отправки работ. Вызов представления редактирования вызывает вышеупомянутую проблему.

Нужно ли что-то определять или настраивать, чтобы моя форма могла загружаться правильно?

1 Ответ

0 голосов
/ 01 июля 2019

Попробуйте настроить пользовательский em для поля формы вашей сущности memberApp в опциях для вашего второго менеджера сущностей базы данных.

, как описано в документации: https://symfony.com/doc/current/reference/forms/types/entity.html#em

em type: string |Doctrine \ Common \ Persistence \ ObjectManager default: менеджер сущностей по умолчанию

Если указан, этот менеджер сущностей будет использоваться для загрузки вариантов вместо менеджера сущностей по умолчанию.

Другой способ, вероятно, для этого поля нужно установить ['mapped' => false] и обработать сброс вручную с правильными значениями em базы данных в контроллере или службе

...