Php Symfony 2.7:无法加载类型“;Symfony\Component\Form\Extension\Core\Type\TextType";

Php Symfony 2.7:无法加载类型“;Symfony\Component\Form\Extension\Core\Type\TextType";,php,forms,symfony,symfony-2.7,Php,Forms,Symfony,Symfony 2.7,我正在开发一个基于Symfony 2.7的应用程序。我有一个自定义表单类型,其中包含以下代码: namespace MyCompany\AppBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Componen

我正在开发一个基于Symfony 2.7的应用程序。我有一个自定义表单类型,其中包含以下代码:

namespace MyCompany\AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Validator\Constraints\NotBlank;

class ContactType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name', TextType::class,
                [
                    'attr'=>
                        [
                            'placeholder' => 'Your name'
                        ],
                    'constraints' =>
                        [
                            new NotBlank(['message' => 'Please provide your name'])
                        ]
                ]
            )
        ;
    }
...
。。。当我加载表单时,我得到以下InvalidArgumentException:

无法加载类型 “Symfony\Component\Form\Extension\Core\Type\TextType”

我已验证TextType类是否存在

我尝试使用composer dump,但似乎没有任何帮助。此外,我尝试删除供应商目录并重新安装composer,但也没有任何帮助


我还可以尝试什么?

在Symfony v2.7中,您不能使用完全限定的类名来表示表单类型,这是在v2.8中添加的。您需要通过传递实例来表示您的类型:

$builder
    ->add('name', new TextType(),
        [
            'attr'        =>
                [
                    'placeholder' => 'Your name',
                ],
            'constraints' =>
                [
                    new NotBlank(['message' => 'Please provide your name']),
                ],
        ]
    );
或通过使用例如
文本

$builder
    ->add('name', 'text',
        [
            'attr'        =>
                [
                    'placeholder' => 'Your name',
                ],
            'constraints' =>
                [
                    new NotBlank(['message' => 'Please provide your name']),
                ],
        ]
    );

Symfony v2.7不再维护,因此我强烈建议升级到至少v2.8

您可以运行
composer dump
以刷新供应商缓存,或删除
供应商/
目录。感谢您的评论,AL。我只是尝试使用
composer dump
,但似乎没有任何帮助。我还尝试删除
供应商
目录并重新安装
composer
,但也没有效果。