Отображение информации о базе данных в форме для сохранения в другой базе данных Php - Symfony - PullRequest
0 голосов
/ 09 апреля 2020

Здравствуйте, ребята, первый вопрос по StackOverflow для меня!

У меня есть 2 базы данных по умолчанию и база данных клиентов, дважды настроенная на doctrine .yaml! Я хочу отобразить на форме информацию таблицы Article, которая поступает из базы данных клиентов, чтобы заполнить сущность Demandes базы данных по умолчанию и сохранить ее после этого. Два объекта связаны внешним ключом (idArticle в Demandes), но я могу подавить его при необходимости.

Но проблема в том, что у меня всегда есть ошибка Ожидаемый аргумент типа «App \ Entity \ Main \ Article or null», «задан экземпляр App \ Entity \ Customer \ Article». или другая ошибка, например, класс 'App \ Entity \ Main \ Demandes' не найден в настроенных цепочках пространств имен App \ Entity \ Customer

Как мне сделать для Symfony понять, что я просто хочу заполнить юридическое лицо Demandes с информацией статьи?

        ->add('idArticle', EntityType::class, [
            'class' => 'App\Entity\Customer\Article',
            'mapped' => true,
            'em' => $options['customer_entity_manager'],
            'choice_label' => 'idArticle'

        ])

и мой контролер

    $customerEntityManager = $this->getDoctrine()->getManager('customer');


    $demande = new Demandes();
    $demande->setTypeDai("Article");
    $demande->setDate(new \DateTime());
    $form = $this->createForm(DemandesTypeArticles::class, $demande, [
        'customer_entity_manager' => $customerEntityManager
]);
    $form->handleRequest($request);
    dump($demande);
    if ($form->isSubmitted() && $form->isValid()) {

        $entityManager = $this->getDoctrine()->getManager('default');
        $entityManager->persist($demande);
        $entityManager->flush();

1 Ответ

0 голосов
/ 14 апреля 2020

Вы можете использовать ChoiceType::class, как показано в следующем коде:

class DemandesTypeArticles extends AbstractType {

    /**
     * @var EntityManager
     */
    private $em;

    public function __construct(EntityManagerInterface $em) {
        $this->em = $em; // Pass 'EntityManager' as Service argument.
    }

    // ...

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

        $articles = $this->em->getRepository(Article::Class)->findAll();

        $arctileChoices = [];
        foreach($articles as $article) {
            $label = 'Title: '.$article->getTitle().'; Id: '.$article->getId(); // Change how article choice label showed get rendert.
            $arctileChoices[$label] = $article->getId();
        }

        $builder
            // ...
            ->add('idArticle', ChoiceType::class, [
                'mapped' => true, // Is true by default.
                'choices' => $articleChoices,
            ])

        ;
    }

    // ...configureOptions and stuff
}
...