gpt4 book ai didi

php - symfony 形式 isvalid eqauls false 但没有错误

转载 作者:行者123 更新时间:2023-12-02 17:21:22 27 4
gpt4 key购买 nike

我正在做一个 symfony 项目,该项目已经上线并使用 doctrine。我在下面描述的问题是新问题,我确定它是由我引起的,但我无法确认这一点,因为我不确定如何调试。

我有一个简单的表单(它提交了两个字段),我可以通过转储以下内容看到这两个值都已正确提交:

$form->handleRequest($request);

问题是虽然我可以看到提交的值,但是表单没有通过验证:

if ($form->isValid() === false)

这曾经通过验证,大概 4 周前,所以这是我最近做过的事情。

我已经转储了 $form->getErrors(true); 以查看是否可以找到错误,但它返回了这个:

RenderController.php on line 20:
FormErrorIterator {#685 ▼
-form: Form {#691 ▶}
-errors: []
}

所以除非我弄错了,否则这里没有发现错误,因为错误是空的。

我读过 $form->isValid() 检查数据模型,即底层实体对象。

我最近对实体进行了更改。为此,我首先向数据库添加一个字段,然后进入实体类手动更新它。

有没有可能是我在添加新字段的时候做错了什么?让我感到困惑的是,还有其他使用新字段的表单,而我没有遇到任何问题。

我不应该手动完成吗?如何进一步调试表单?

最佳答案

这可能是由 symfony 中的验证工作方式引起的。正如您所写的那样, $form->isValid() 实际上并不验证表单本身。相反,底层实体是经过验证的。

现在到了棘手的部分:不仅验证了表单中存在的字段,而且验证了实体的每个字段。如果您的表单仅代表您实体的一部分,则会发生所描述的效果。可能添加的字段之一具有 NotBlank 断言(或类似断言)但不存在于您的表单中。对于一个新实体,这总是会失败。并且由于该字段不存在于表单中,因此表单中也没有错误。

要解决此问题,要么扩展您的表单,从新字段中删除断言,要么查看 validation groups

关于php - symfony 形式 isvalid eqauls false 但没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42396811/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com