web-dev-qa-db-fra.com

L'argument 1 passé à Symfony \ Component \ Form \ FormRenderer :: renderBlock () doit être une instance de ... \ FormView, une instance de ... \ Form est donnée

Toute l'erreur est l'espace de noms missiong Symfony\Component\Form qui est remplacé par 3 points, en raison du nombre maximal de caractères du titre.

Donc, je suis les étapes qui sont présentées dans le docs et je ne peux pas trouver la source de l'erreur que j'obtiens. Si quelqu'un pouvait aider, je l'apprécierais grandement.

Voici la méthode de mon AuthController

/**
 * @Route("/register", name="registrationPage")
 */
public function showRegistrationPage(Request $request)
{
    return $this->render('auth/register.html.twig', [
        'register_form' => $this->createForm(RegisterType::class, (new UserInformation()))
    ]);
}

Et voici la méthode, où je déclare le formulaire

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('firstname', TextType::class, ['attr' => ['class' => 'form-control']])
        ->add('secondname', TextType::class, ['attr' => ['class' => 'form-control']])
        ->add('email', EmailType::class, ['attr' => ['class' => 'form-control']])
        ->add('password', PasswordType::class, ['attr' => ['class' => 'form-control']])
        ->add('password_confirmation', PasswordType::class, [
            'label' => 'Confirm Password',
            'attr' => ['class' => 'form-control'],
            'mapped' =>false
        ])
        ->add('Register', SubmitType::class, ['attr' => ['class' => 'btn btn-primary']]);

}
12
h0lend3r
/**
 * @Route("/register", name="registrationPage")
 */
public function showRegistrationPage(Request $request)
{
    $form = $this->createForm(RegisterType::class, (new UserInformation());

    return $this->render('auth/register.html.twig', [
        'register_form' => $form->createView()
    ]);
}

http://symfony.com/doc/current/forms.html#building-the-form

la partie manquante était la méthode createView ()

/**
 * @Route("/register", name="registrationPage")
 */
public function showRegistrationPage(Request $request)
{
    return $this->render('auth/register.html.twig', [
        'register_form' => $this->createForm(RegisterType::class, (new UserInformation()))->createView()
    ]);
}
2
giurgiu rubin