【问题标题】:Symfony3.4 Form errors rendered twiceSymfony3.4 表单错误呈现两次
【发布时间】:2019-10-13 03:55:21
【问题描述】:

我有一个带有 authormessage 字段以及 NotBlank() 验证的表单。

在树枝中,我这样做:

{{ form_start(form) }}

    {{ form_errors(form.author) }}
    {{ form_label(form.author) }}
    {{ form_widget(form.author) }}


    {{ form_errors(form.message) }}
    {{ form_label(form.message) }}
    {{ form_widget(form.message) }}

{{ form_end(form) }}

如果我按 保存 按钮并显示空白字段我希望 会看到:

但我明白了:

不知何故,底部错误消息来自 {{ form_label(...) }} 我这样说,因为如果我将标签注释掉并使用静态 HTML 作为标签,输出就像在第一张照片上。

我不希望对标签使用静态 HTML,但我不明白第二条错误消息的来源。

在我的代码下面:

表格

class TestFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('author', TextType::class, ['required' => false, 'constraints' => [new NotBlank()]])
            ->add('message', TextType::class, ['required' => false, 'constraints' => [new NotBlank()]])
            ->add('save', SubmitType::class)
        ;
    }
}

控制器

class TestController extends Controller
{
    /**
     * @Route("/testing", name="test")
     * @param Request $request
     * @return RedirectResponse|Response
     */
    public function index(Request $request)
    {
        $form = $this->createForm(TestFormType::class);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid())
        {
            return $this->redirectToRoute('test');
        }

        return $this->render('test/index.html.twig', [
            'form' => $form->createView(),
        ]);
    }
}

模板 {% 扩展 'base.html.twig' %} {% 块标题 %}Hello TestController!{% endblock %}

{% block body %}

    <p>This is a test...</p>

    {{ form_start(form) }}

        {{ form_errors(form.author) }}
        {{ form_label(form.author) }}
        {{ form_widget(form.author) }}

        {{ form_errors(form.message) }}
        {{ form_label(form.message) }}
        {{ form_widget(form.message) }}

    {{ form_end(form) }}

{% endblock %}

【问题讨论】:

  • 也许,你可以使用 form_row 代替,不是吗?
  • @Adrien 是的,但我还是想知道为什么会这样。

标签: symfony symfony4 symfony-forms symfony-3.4


【解决方案1】:

您已明确添加了 form_errors,而错误消息已通过 form_label 呈现。您可以删除 form_errors 或 form_label。

【讨论】:

  • stackoverflow.com/q/56338792/8631622 请调查这个问题。我做了我能做的一切。但我无法解决这个问题@Mitesh Vasava
【解决方案2】:

对于引导主题错误块是integrated in label。 因此,您需要删除模板中的 form_errors 块或覆盖 form_label 块。 您可以使用form_row(正如@Adrien 在评论中建议的那样),因为没有form_errors call

【讨论】:

  • 感谢您的参考。这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-13
  • 1970-01-01
  • 2019-05-11
  • 2017-04-30
相关资源
最近更新 更多