Symfony 3 表单类型错误

6
我有一个实体"新闻",它包含以下字段:
/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\Column(type="string", length=100)
 */
protected $name;


/**
 * @ORM\Column(type="text")
 */
protected $description;

我在控制器中生成表单:

public function createNewsAction(Request $request)
{
    $news = new News();
    $news->setName('New!');
    $news->setDescription('test');
    $form = $this->createFormBuilder($news)
        ->add('name', TextType::class)
        ->add('description', TextType::class)
        ->add('save', SubmitType::class, array('label' => 'Create Task'))
        ->getForm();
    return $this->render('frontend/createNews.html.twig', array(
        'form' => $form->createView(),
    ));
}

当我尝试调用这个方法("createNewsAction")时,我收到了错误提示:
Could not load type "Doctrine\DBAL\Types\TextType"

500 Internal Server Error - InvalidArgumentException

Stack Trace

in vendor\symfony\symfony\src\Symfony\Component\Form\FormRegistry.php at line 87   -
                if (class_exists($name) && in_array('Symfony\Component\Form\FormTypeInterface', class_implements($name))) {
                    $type = new $name();
                } else {
                    throw new InvalidArgumentException(sprintf('Could not load type "%s"', $name));
                }
            }

这段代码有什么问题?

TextType和SubmitType需要使用use语句。请查看示例。 - Cerad
3
我发现错误。在控制器中,语句 "use Doctrine\DBAL\Types\TextType;" 应改为 "use Symfony\Component\Form\Extension\Core\Type\TextType;"。 - raskopin
1个回答

20

请检查您控制器顶部的use语句...
您可能使用了以下内容:

use Doctrine\DBAL\Types\TextType

应该是:

use Symfony\Component\Form\Extension\Core\Type\TextType;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接