【问题标题】:Form does not display form errors in template表单不显示模板中的表单错误
【发布时间】:2013-02-04 11:20:03
【问题描述】:

对于我的联系表单,不会显示任何表单错误。

    $contact = new Contact();

    $form = $this->createForm(new ContactFormType(), $contact);

    /* handle contact form submission */
    if ('POST' == $request->getMethod()) {
        $form->bindRequest($request);

        if ($form->isValid()) {
            //Do something
        }
    }

    return $this->render('MainBundle:Default:contact.html.twig', array(
                'form' => $form->createView()
    ));

我的验证器

Fc\MainBundle\Entity\Contact:
    properties:
        firstName:
            - NotBlank: ~

        lastName:
            - NotBlank: ~

        email:
            - NotBlank: ~
            - Email:
                checkMX: true
        title:
            - NotBlank: ~
        message:
            - NotBlank: ~

我在我的表单标签中添加了一个 novalidate 属性来检查我的验证是否有效。现在,当我提交带有空数据的表单时,什么都没有发生(使用正确的数据一切都很好),控制器将表单识别为无效并停止进一步的处理。

在我调用的模板中

 {{ form_errors(form) }}

但是什么都没有显示。任何想法为什么?我使用 symfony 2.1.X

【问题讨论】:

    标签: symfony symfony-2.1


    【解决方案1】:

    您能否确认验证正在处理此问题:

    if ($form->isValid()) {
    //Do something
    }
    else
    { die('not valid') }
    

    表格张贴得好吗?

    HTML 中是否有任何内容显示您调用 {{ form_errors(form) }} 的位置? - 如果是这种情况,那将是 CSS 或 JS 问题...

    您是否尝试按字段显示错误(显然您的验证中没有全局错误):

    {{ form_errors(form.firstName) }}
    etc.
    

    备注:form.firstName 有效,而不是 form.first_name。你必须遵循 Doctrine2/Symfony2 的约定。

    【讨论】:

    • +1 最后一点...它显示了 firstName 字段或任何单个字段的错误消息。但是 form_errors(form) 不起作用。我需要 form_errors(form) 才能工作
    • 当时不记得语法,但基本上,您只需要循环所有表单错误......看看API。可能类似于 $errors = $form->getErrors() 并在模板中使用它(对于错误中的错误 ...error.message)
    • $form->getErrors() 返回空数组
    • 在 API 中:github.com/symfony/Form/blob/master/FormView.php ... FormView 实现了 IteratorAggregate 这意味着您可以执行 {% for raw in form %} 。 form_errors(form) 显示全局错误。 form_errors(raw) 应该可以。
    • 我找到了问题的答案。 Symfony2 不喜欢字段名称中的“_”下划线。我必须遵循骆驼约定并将其更改为名字。现在它适用于各个领域。
    猜你喜欢
    • 1970-01-01
    • 2017-10-20
    • 2012-01-12
    • 1970-01-01
    • 2020-03-20
    • 2021-09-06
    • 1970-01-01
    • 2011-02-01
    相关资源
    最近更新 更多