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,
]
);
}