Php Symfony表单即使在无效数据上也是有效的

Php Symfony表单即使在无效数据上也是有效的,php,forms,validation,symfony,Php,Forms,Validation,Symfony,我有一个奇怪的问题 我的表格由symfony有效,即使提供的数据不正确。此表单由ajax请求创建和发布(这可能会影响它) 数据如下所示(使用xdebug检索): 问题是,根据需要设置的名称是空的,即使表单被标记为有效并且并没有错误。在此之后,有一个关于缺少必填字段的原则例外 你知道为什么会这样吗 Symfony v2.8.10,Doctrine v1.6.4所需属性不充当验证器。 引用 如果为true,将呈现HTML5必需的属性。相应的标签也将使用所需的类呈现 这是肤浅的,独立于验证。充其量,如

我有一个奇怪的问题

我的表格由symfony有效,即使提供的数据不正确。此表单由ajax请求创建和发布(这可能会影响它)

数据如下所示(使用xdebug检索):

问题是,根据需要设置的名称是空的,即使表单被标记为有效并且并没有错误。在此之后,有一个关于缺少必填字段的原则例外

你知道为什么会这样吗


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(),
            ],
        ])