调用 isSumbitted() 和 isValid() 导致“未定义的方法";错误 [英] Calls to isSumbitted() and isValid() result in "undefined method" error

查看:32
本文介绍了调用 isSumbitted() 和 isValid() 导致“未定义的方法";错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 Symfony 表单,它是从控制器中的 createFormBuilder() 创建的.但是在两个 IF 语句下,表单应该带有两个不同的字段集.我的 Symfony 版本是 3.4.

I have a Symfony form that is created from createFormBuilder() in the controller. But under two IF statements the form should carry two different set of fields. My Symfony version is 3.4.

/src/AppBundle/Controller/DefaultController.php

/src/AppBundle/Controller/DefaultController.php

例如:这是基本形式.

$form = $this->createFormBuilder()
    ->add('name', TextType::class, ['required' => true]])
    ->add('email', EmailType::class, ['required' => true]])
    ->getForm();

if ($form->isSubmitted() && $form->isValid()) {
        ...
        ...
        ...
}

现在,当条件成立时,我需要向这个基本表单添加更多字段.下面显示的是我所做的,它给了我一个错误.

Now I need to append few more fields to this basic form when a condition becomes true. Shown below is what I did and it gives me an error.

$form = $this->createFormBuilder()
        ->add('name', TextType::class, ['required' => true]])
        ->add('email', EmailType::class, ['equired' => true]]);

if($a==true){
    $form->add('username', TextType::class, ['required' => true]])
         ->add('password', PasswordType::class, ['required' => true]]);
}

$form->getForm();

if ($form->isSubmitted() && $form->isValid()) {
        ...
        ...
        ...
}

错误是:

试图调用类的名为isSubmitted"的未定义方法Symfony\Component\Form\FormBuilder".

Attempted to call an undefined method named "isSubmitted" of class "Symfony\Component\Form\FormBuilder".

我怎样才能做到这一点?在不同情况下在多个场合追加字段?

How can I get this done? Append fields at multiple occasions under different conditions?

推荐答案

尝试:

$formbuilder = $this->createFormBuilder()
        ->add('name', TextType::class, ['required' => true]])
        ->add('email', EmailType::class, ['equired' => true]]);

if($a==true){
    $formbuilder->add('username', TextType::class, ['required' => true]])
         ->add('password', PasswordType::class, ['required' => true]]);
}

$form = $formbuilder->getForm();

if ($form->isSubmitted() && $form->isValid()) {
        ...
        ...
        ...
}

这篇关于调用 isSumbitted() 和 isValid() 导致“未定义的方法";错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆