【问题标题】:Argument 1 passed to Symfony\Component\Form\FormRenderer::renderBlock() must be an instance of ...\FormView, instance of ...\Form given传递给 Symfony\Component\Form\FormRenderer::renderBlock() 的参数 1 必须是 ...\FormView 的实例,给定 ...\Form 的实例
【发布时间】:2017-06-13 18:16:52
【问题描述】:

整个错误是missiong namespace Symfony\Component\Form,由于标题最大字符,它被替换为3个点。

所以,我正在按照docs 中提供的步骤进行操作,但我无法找到我遇到的错误的来源。如果有人可以提供帮助,我将不胜感激。

这是我的 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()))
    ]);
}

这是我声明表单的方法

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

}

【问题讨论】:

标签: php forms symfony symfony-forms symfony-3.3


【解决方案1】:
/**
 * @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

【讨论】:

    【解决方案2】:

    缺少的部分是 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()
        ]);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-11
      • 2017-04-06
      相关资源
      最近更新 更多