Php “选择权”;“限制”;不存在
我使用的是symfony2.6。我试图创建一个没有实体的表单,但出现以下错误: “约束”选项不存在。已知选项有:“行动”, “属性”、“自动初始化”、“块名称”、“按引用”、“复合”, “csrf_字段名称”、“csrf_消息”、“csrf_保护”、“csrf_提供程序”, “csrf\U令牌\U id”、“csrf\U令牌\U管理器”、“数据”、“数据\U类”, “禁用”、“空数据”、“错误冒泡”、“继承数据”, “意图”、“标签”、“标签属性”、“标签格式”、“映射”, “最大长度”、“方法”、“模式”、“发布最大尺寸消息”, “属性路径”、“只读”、“必需”、“翻译域”, “修剪”、“虚拟” 仅使用setDefaultOptions不会显示错误,但它不起作用,不会验证字段 正如可以看到的,无论如何都尝试过。我还尝试了使用组件表单发件箱的文档,但得到了相同的错误Php “选择权”;“限制”;不存在,php,forms,symfony,Php,Forms,Symfony,我使用的是symfony2.6。我试图创建一个没有实体的表单,但出现以下错误: “约束”选项不存在。已知选项有:“行动”, “属性”、“自动初始化”、“块名称”、“按引用”、“复合”, “csrf_字段名称”、“csrf_消息”、“csrf_保护”、“csrf_提供程序”, “csrf\U令牌\U id”、“csrf\U令牌\U管理器”、“数据”、“数据\U类”, “禁用”、“空数据”、“错误冒泡”、“继承数据”, “意图”、“标签”、“标签属性”、“标签格式”、“映射”, “最大长度”、“方法
$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;