如何将我的表单错误放入 Symfony 4 中的字符串中?

How can I get the errors of my form into a string in Symfony 4?

我正在尝试从表单中输出错误:

  ->getForm();
  $form->handleRequest($request);
  if($form->isSubmitted() && $form->isValid()) {
    $password = $passwordEncoder->encodePassword($item, $item->getPlainPassword());
    $item->setPassword($password);
    $item = $form->getData();
    $entityManager = $this->getDoctrine()->getManager();
    $entityManager->persist($item);
    $entityManager->flush();
    return $this->redirectToRoute('pages', array(
      'slug' => $slug,
    ));
  } else {
    $errors = $form->getErrors();
  }


 return $this->render('list.html.twig', ['errors' => $errors,'form' => $form->createView()]);

在我的 list.html.twig 中,我尝试这样输出它:

{% extends 'base.html.twig' %}

{% block title %}Symfony{% endblock %}

{% block body %}

    <h1>{{ form_errors(form) }}</h1>


         <div class="form-group">
            {{ form_start(form) }}
            {{ form_widget(form) }}
            {{ form_end(form) }}
          </div>

{% endblock %}

{% block javascripts %}

{{ parent() }}

{% endblock %}

但我没有看到错误,甚至 Symfony 也在 Profiler 中告诉我有错误。

要获得每个字段的单独错误,您需要这样做:

<div>
    {{ form_label(form.age) }}
    {{ form_errors(form.age) }}
    {{ form_widget(form.age) }}
    {{ form_help(form.age) }}
</div>

您可以阅读更多相关信息here

基于您的实体,您的表单呈现将是这样的

<div>
    {{ form_label(form.username) }}
    {{ form_widget(form.username) }}
    {{ form_errors(form.username) }}
    {{ form_help(form.username) }}
</div>
<div>
    {{ form_label(form.plainPassword.first) }}
    {{ form_widget(form.plainPassword.first) }}
    {{ form_errors(form.plainPassword.first) }}
    {{ form_help(form.plainPassword.first) }}
</div>
<div>
    {{ form_label(form.plainPassword.second) }}
    {{ form_widget(form.plainPassword.second) }}
    {{ form_errors(form.plainPassword.second) }}
    {{ form_help(form.plainPassword.second) }}
</div>

这基于您的实体,将被视为登录表单当然您必须根据您的要求添加其他字段一个按钮和一些 html 或者您可以使用 bs3 的表单主题或bs4等 搜索手册,您会找到更多信息。 你也应该编辑你的 post 并在那里添加你的实体和 html twig.