Symfony3.4表单错误呈现两次

时间:2019-05-27 14:51:52

标签: symfony symfony4 symfony-forms symfony-3.4

我有一个带有 author message 字段的表单,并且两个表单上都有 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) }}

如果我按下 Save (保存)按钮,并使用空白字段 I EXPECT 看到以下内容:

enter image description here

但是我明白了:

enter image description here

以某种方式,底部错误消息来自 {{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'%}     {%block title%}您好,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 %}

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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