传递给Symfony\Component\Form\FormRenderer :: renderBlock()的参数1必须是...\FormView的实例,...的实例给出

h0l*_*d3r 13 php forms symfony-forms symfony symfony-3.3

整个错误是missiong命名空间Symfony\Component\Form,由于标题最大字符而被3个点替换.

所以,我正在遵循文档中提供的步骤,我无法找到我得到的错误的来源.如果有人能提供帮助,我会非常感激.

这是我的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()))
    ]);
}
Run Code Online (Sandbox Code Playgroud)

这是方法,我在其中声明表单

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']]);

}
Run Code Online (Sandbox Code Playgroud)

小智 15

/**
 * @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()
    ]);
}
Run Code Online (Sandbox Code Playgroud)

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

  • 解释总是有帮助的,如果这个答案中没有它,我必须来回查看问题的代码以找到差异并找出修复方法:( (2认同)

小智 5

缺少的部分是 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()
    ]);
}
Run Code Online (Sandbox Code Playgroud)