【发布时间】:2019-10-13 03:55:21
【问题描述】:
我有一个带有 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) }}
如果我按 保存 按钮并显示空白字段我希望 会看到:
但我明白了:
不知何故,底部错误消息来自 {{ 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