0

我有一个包含作者消息字段以及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(),
        ]);
    }
}

模板 {% extends 'base.html.twig' %} {% block title %}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 %}
4

2 回答 2

4

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

于 2019-05-27T15:20:25.353 回答
1

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

于 2019-05-28T03:36:09.177 回答