Php “选择权”;“限制”;不存在

Php “选择权”;“限制”;不存在,php,forms,symfony,Php,Forms,Symfony,我使用的是symfony2.6。我试图创建一个没有实体的表单,但出现以下错误: “约束”选项不存在。已知选项有:“行动”, “属性”、“自动初始化”、“块名称”、“按引用”、“复合”, “csrf_字段名称”、“csrf_消息”、“csrf_保护”、“csrf_提供程序”, “csrf\U令牌\U id”、“csrf\U令牌\U管理器”、“数据”、“数据\U类”, “禁用”、“空数据”、“错误冒泡”、“继承数据”, “意图”、“标签”、“标签属性”、“标签格式”、“映射”, “最大长度”、“方法

我使用的是symfony2.6。我试图创建一个没有实体的表单,但出现以下错误:

“约束”选项不存在。已知选项有:“行动”, “属性”、“自动初始化”、“块名称”、“按引用”、“复合”, “csrf_字段名称”、“csrf_消息”、“csrf_保护”、“csrf_提供程序”, “csrf\U令牌\U id”、“csrf\U令牌\U管理器”、“数据”、“数据\U类”, “禁用”、“空数据”、“错误冒泡”、“继承数据”, “意图”、“标签”、“标签属性”、“标签格式”、“映射”, “最大长度”、“方法”、“模式”、“发布最大尺寸消息”, “属性路径”、“只读”、“必需”、“翻译域”, “修剪”、“虚拟”

仅使用setDefaultOptions不会显示错误,但它不起作用,不会验证字段

正如可以看到的,无论如何都尝试过。我还尝试了使用组件表单发件箱的文档,但得到了相同的错误

    $form = $formFactory->createBuilder()
    ->add('task', 'text', array(
        'constraints' => new NotBlank(),
    ))
    ->add('dueDate', 'date', array(
        'constraints' => array(
            new NotBlank(),
            new Type('\DateTime'),
        )
    ))
    ->getForm();

编辑

我也尝试过这种方法,但得到了相同的错误

    $form = $formFactory->createBuilder()
    ->add('task', 'text', array(
        'constraints' => new NotBlank(),
    ))
    ->add('dueDate', 'date', array(
        'constraints' => array(
            new NotBlank(),
            new Type('\DateTime'),
        )
    ))
    ->getForm();

“约束”选项是验证程序扩展表单的一部分。我是如何解决问题的:

$ValidatorExtension = new ValidatorExtension($validatorBuilder->getValidator());

$formRegistry = new FormRegistry([$csrfProvider, new CoreExtension(), $ValidatorExtension], Yii::$symfony->container->get('form.resolved_type_factory'));

“约束”选项是
ValidatorExtension
的一部分,它不是核心表单扩展的一部分<代码>类型测试用例它只加载核心表单扩展。添加以下代码修复了该问题

protected function getExtensions()
{
    return [new ValidatorExtension(Validation::createValidator())];
}

要了解更多信息,这是一个很老的问题,我刚找到它,所以这个问题仍然不时出现

我确实喜欢在文档中:

当然,不要忘记使用:

use Symfony\Component\Form\Extension\Validator\ValidatorExtension;

我觉得你想做的是完全正确的。由于这里没有任何提示,我会在
buildForm
中设置一个断点,然后尝试按照
Symfony
查看失败的原因…您确定此错误来自您尝试添加到
发送方
文本输入的
约束
选项,而不是来自代码中的其他地方吗?我也不知道出了什么事。是的,我明白。我所做的与Symfony文档中的操作完全相同,但仍然存在相同的错误。我添加了此答案,以便此问题不会出现在未回答的页面上:
use Symfony\Component\Form\Extension\Validator\ValidatorExtension;