我有一个带有 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 看到以下内容:
但是我明白了:
以某种方式,底部错误消息来自 {{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 %}
答案 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。