我正在开发一个基于Symfony 2.7的应用程序。我有一个包含以下代码的自定义表单类型:
namespace MyCompanyAppBundleForm;
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentOptionsResolverOptionsResolver;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentValidatorConstraintsNotBlank;
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'])
]
]
)
;
}
...
。当我加载表单时,我得到以下无效参数异常:
无法加载类型 "Symfony\Component\Form\Extension\Core\Type\TextType">
我已经验证了 TextType 类是否存在。
我尝试使用作曲家转储,但它似乎没有帮助。此外,我尝试删除供应商目录并重做作曲家安装,这也无济于事。
我还能尝试什么?
你不能使用完全限定的类名来表示 Symfony v2.7 中的表单类型 - 这是在 v2.8 中添加的。您需要通过传递实例来表示您的类型:
$builder
->add('name', new TextType(),
[
'attr' =>
[
'placeholder' => 'Your name',
],
'constraints' =>
[
new NotBlank(['message' => 'Please provide your name']),
],
]
);
或者使用简写名称,例如text
:
$builder
->add('name', 'text',
[
'attr' =>
[
'placeholder' => 'Your name',
],
'constraints' =>
[
new NotBlank(['message' => 'Please provide your name']),
],
]
);
Symfony v2.7 不再维护,所以我强烈建议至少升级到 v2.8