【发布时间】:2017-02-22 16:16:47
【问题描述】:
我正在开发一个 symfony 项目,该项目已经上线并使用原则。我在下面描述的问题是新问题,我确定它是由我引起的,但我无法确认这一点,因为我不确定如何调试。
我有一个简单的表单(它提交两个字段),通过转储以下内容,我可以看到这两个值都已正确提交:
$form->handleRequest($request);
问题是虽然我可以看到提交的值,但是表单没有通过验证:
if ($form->isValid() === false)
这曾经通过验证,可能是 4 周前,所以这是我最近做的事情。
我已转储 $form->getErrors(true); 以查看是否可以找到错误,但它返回:
RenderController.php on line 20:
FormErrorIterator {#685 ▼
-form: Form {#691 ▶}
-errors: []
}
所以除非我弄错了,否则这里没有发现错误,因为错误是空的。
我读到$form->isValid() 检查数据模型,即底层实体对象。
我最近对实体进行了更改。我首先向数据库添加一个字段,然后进入实体类手动更新它。
添加新字段时是否可能做错了什么?让我感到困惑的是,使用新字段的其他形式,我没有遇到任何问题。
我不应该手动完成吗?如何进一步调试表单?
【问题讨论】:
-
doctrine:schema:validate查看您的数据库是否同步。如果您使用 git,请检查git bisect以找出有缺陷的提交。 -
要检查它是否有效,您通常使用:
if ( $form->isValid() ),如果有效则返回 true。如果您想检查它是否无效,请使用if ( !$form->isValid() )。所以你不需要额外的=== false。 -
doctrine:schema:validate说映射文件是正确的。 -
===用于比较相同的types。由于您正在检查它是否无效并且isValid()返回一个布尔值,那么您应该使用if( !$form->isValid() )。你想让我把这个作为答案发布吗?我不确定这是否解决了您要解决的问题? -
=== false 可能不是很漂亮,但也没有错。事实上,它清楚地表明您实际上是在检查布尔值而不是其他“虚假”值,例如空字符串或 null
标签: php forms symfony doctrine