Symfony Collection of forms

Viewed 17

So I embed a Collection of Forms in Symfony with CollectionType, I was trying to, in the same page and in a single form, create an user and an entity called Partner with a OneToOne relation (user_id for the partner), and it's giving me this error :

Expected argument of type "?App\Entity\User", "array" given at property path "user".

Please, help me.

PartnerController.php :

#[Route('/new', name: 'app_partenaire_new', methods: ['GET', 'POST'])]
public function new(Request $request, PartenaireRepository $partenaireRepository, 
UserPasswordHasherInterface $userPasswordHasher, EntityManagerInterface $entityManager): 
Response
{
$user = new User();
$partenaire = new Partenaire();

$form = $this->createForm(PartenaireType::class, $partenaire);
$form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid())  {

    $user->setRoles(['ROLE_PARTENAIRE']);
    $user->setIsActive(true);
   /* $user->setPassword(
        $userPasswordHasher->hashPassword(
            $user,
            $form->get('plainPassword')->getData()

        )
    )*/;


       $partenaire->setUser($user->getId());

    $entityManager->persist($user);
    $entityManager->persist($partenaire);

    $partenaireRepository->add($partenaire, true);

    return $this->redirectToRoute('app_partenaire_index', [], Response::HTTP_SEE_OTHER);
}




return $this->renderForm('partenaire/new.html.twig', [
    'partenaire' => $partenaire,
    'form' => $form,
]);

}

Partner.php :

 #[ORM\OneToOne(inversedBy: 'partenaire', cascade: ['persist', 'remove'])]
 #[ORM\JoinColumn(nullable: false)]
 private ?User $user = null;

 public function getUser(): ?User
 {
return $this->user;
}

public function setUser(?User $user): self
{
$this->user = $user;

return $this;
}

PartnerType.php :

class PartenaireType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array 
 $options): void
{
$builder
    ->add('name')
    ->add('description');


    $builder->add('user', CollectionType::class, [
 'entry_type' => RegistrationFormType::class,
 'entry_options' => ['label' => false],
 'allow_add' => true,
 'allow_delete' => true,
 'by_reference' => false,
  ]
  );

 }
0 Answers
Related