这个 createForm 参数有什么问题?

What's wrong with this createForm arguments?

我刚开始使用 symfony 表单,但我不明白,为什么会出现此类错误: screen from profiler

那么我应该传递什么作为参数才能使其正常工作? 这是我来自 RegisterController 的代码:

/**
 * @Route("/register", name="register")
 */
public function showRegisterAction()
{
    $registration = new User();

    $form = $this->createForm(new Register(), $registration, ['action' => $this->generateUrl('create'), 'method' => 'POST']);

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

和我的注册代码 class with fromBuilder:

class Register extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('name', 'text', ['label' => 'USERNAME'])
        ->add('mail', 'email', ['label' => 'email'])
        ->add('password', 'password', ['label' => 'password'])
        ->add('password_repeat', 'password', ['mapped' => false, 'label' => 'confirm'])
        ->add('company', 'text', ['label' => 'company'])
        ->add('nip', 'text', ['label' => 'nip'])
        ->add('street', 'text', ['label' => 'street'])
        ->add('street_nr', 'text', ['label' => 'street_nr'])
        ->add('postal_code', 'text', ['label' => 'postal_code'])
        ->add('city', 'text', ['label' => 'city'])
        ->add('tel', 'text', ['label' => 'tel'])
        ->getForm();
}

public function getName()
{
    return "register";
}

public function setDefaultOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(['data_class' => 'AppBundle\Entity\User']);
}

}

createForm 方法要求第一个参数是 class 名称(字符串)形式,而不是它的实例。

因此更改此行:

$form = $this->createForm(new Register(), $registration, ['action' => $this->generateUrl('create'), 'method' => 'POST']);

$form = $this->createForm(
    Register::class,
    $registration,
    ['action' => $this->generateUrl('create'), 'method' => 'POST']
);

此外,请注意,在创建表单时不需要 getForm() FormBuilder 的方法 classes。

供参考:http://symfony.com/doc/current/forms.html#creating-form-classes