首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Symfony2表单无效,没有错误

Symfony2表单无效,没有错误
EN

Stack Overflow用户
提问于 2012-06-26 21:58:14
回答 7查看 71K关注 0票数 63

我有一个Symfony2生成的CRUD表单的问题。(使用MongoDB文档,但我不认为这与此相关)

在我的控制器的createAction()方法中,当我调试表单结果时:

$form->isValid() // returns false

$form->getErrors() // returns en empty array(0) {}

所以,我在我的树枝模板上使用form_errors(form)没有得到任何东西(由于返回$form->getErrors()为空,这看起来很正常)

并且写入的值不会被替换为...

有谁有主意吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-06-28 03:47:01

首先要理解的是,验证是在模型上完成的,而不是在表单上。表单可以包含错误,但前提是它有一个字段映射到未验证的属性。因此,如果表单不包含无效字段(可能是表单中不存在的属性上的NotNull断言),则不会显示错误。

第二件事是$form->getErrors()将只显示该级别的错误,每个子窗体都可以包含自己的错误。因此,如果您想检查错误,应该遍历字段并对每个字段调用getErrors。Form类上的getErrors方法可以通过这种方式进行欺骗。

票数 64
EN

Stack Overflow用户

发布于 2012-12-29 17:32:50

若要调试窗体,请使用$form->getErrorsAsString()而不是$form->getErrors()

$form->getErrorsAsString()应该只用于调试,form...it将包含每个子元素的错误,这不是$form->getErrors()的情况。

正如Peter提到的,$form->getErrors()不会返回子表单所有错误的总和。

为了理解表单是如何无效的,并让getErrors()返回一个空数组,您可以查看symfony form类的isValid()方法。如您所见,有两种情况下表单无效,第一种是针对一般表单的测试,第二种是针对每个子元素的用例测试。

public function isValid()
{
    //...

    //CASE I : IF CHILD ELEMENTS HAVE ERRORS, $this->errors WILL CONTAIN
    //THE ERROR ON THE CHILD ELEMENT AND NOT ON THE GENERAL 'errors' FIELD 
    //ITSELF

    if (count($this->errors) > 0) {
        return false;
    }

    //CASE II: AND THIS IS WHY WE ARE TESTING THE CHILD ELEMENTS AS WELL
    //TO CHECK WHETHER THERE ARE VALID OR NOT

    if (!$this->isDisabled()) {
        foreach ($this->children as $child) {
            if (!$child->isValid()) {
                return false;
            }
        }
    }

    return true;
}

因此,每个子窗体都可以包含一个错误,但$form->getErrors()本身不会返回所有错误。考虑到一个有许多子元素的表单,如果CSRF不正确,您通常会有一个带有CSRF错误的$ form ->getErrors()。

票数 63
EN

Stack Overflow用户

发布于 2017-10-18 17:35:22

对于Symfony (>= 3.2 - 4),您可以使用:

foreach($form->getErrors(true, false) as $er) {
    print_r($er->__toString());
}

来查看明显的错误。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11208992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档