Php Symfony表单即使在无效数据上也是有效的
我有一个奇怪的问题 我的表格由symfony有效,即使提供的数据不正确。此表单由ajax请求创建和发布(这可能会影响它) 数据如下所示(使用xdebug检索): 问题是,根据需要设置的名称是空的,即使表单被标记为有效并且并没有错误。在此之后,有一个关于缺少必填字段的原则例外 你知道为什么会这样吗Php Symfony表单即使在无效数据上也是有效的,php,forms,validation,symfony,Php,Forms,Validation,Symfony,我有一个奇怪的问题 我的表格由symfony有效,即使提供的数据不正确。此表单由ajax请求创建和发布(这可能会影响它) 数据如下所示(使用xdebug检索): 问题是,根据需要设置的名称是空的,即使表单被标记为有效并且并没有错误。在此之后,有一个关于缺少必填字段的原则例外 你知道为什么会这样吗 Symfony v2.8.10,Doctrine v1.6.4所需属性不充当验证器。 引用 如果为true,将呈现HTML5必需的属性。相应的标签也将使用所需的类呈现 这是肤浅的,独立于验证。充其量,如
Symfony v2.8.10,Doctrine v1.6.4所需属性不充当验证器。 引用 如果为true,将呈现HTML5必需的属性。相应的标签也将使用所需的类呈现 这是肤浅的,独立于验证。充其量,如果让Symfony猜测字段类型,那么将从验证信息中猜测此选项的值
请看一看“名称”字段可能未启用验证。 要启用它,请向实体添加NotBlank注释:
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*
* @Assert\NotBlank()
*/
private $name;
或直接向表单添加约束:
$builder
->add('name', TextType::class, [
'constraints' => [
new \Symfony\Component\Validator\Constraints\NotBlank(),
],
])
实体中的名称是否设置为不可为空?请使用
handleRequest
代替submit
和issmitted
代替isMethod
参见此处的示例最佳实践,稍后检查联系人
类中的约束。是的,它设置为不为空(或非参考变量的默认原则行为)。但我一直认为,我对表单字段的定义是指是否需要。我尝试过HandlerRequest和isSubmitted,但这只是从提交的表单获取数据的不同方法。验证本身对这两种方法都不起作用。我向实体添加了断言约束,但没有帮助。我将尝试这种可能的方法解决方法,然后可能开始深入研究symfony,为什么验证不起作用。谢谢!我无法在REST API上使用通用方式(“required”=>true
)设置必填字段($form->isValid()
没有捕获缺少的字段)。取而代之的是,new NotBlank()
工作正常,我现在可以捕获缺少的字段:)
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*
* @Assert\NotBlank()
*/
private $name;
$builder
->add('name', TextType::class, [
'constraints' => [
new \Symfony\Component\Validator\Constraints\NotBlank(),
],
])