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

Symfony 2.7: Could not load type "Symfony\Component\Form\Extension\Core\Type\TextType"

我正在开发一个基于 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:

Could not load type "Symfony\Component\Form\Extension\Core\Type\TextType"

我已验证 TextType class 存在。

我尝试使用 composer dump,但似乎没有帮助。此外,我尝试删除 vendor 目录并重做 composer install,但这也没有帮助。

我还能尝试什么?

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

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

或使用 shorthand name 例如 text:

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

虽然 Symfony v2.7 不再维护,所以我强烈建议至少升级到 v2.8