Forms 如何在Symfony 4中将表单中的错误转换为字符串?

Forms 如何在Symfony 4中将表单中的错误转换为字符串?,forms,symfony,render,Forms,Symfony,Render,我正在尝试从表单中输出错误: ->getForm(); $form->handleRequest($request); if($form->isSubmitted() && $form->isValid()) { $password = $passwordEncoder->encodePassword($item, $item->getPlainPassword()); $item->setPassword($

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

  ->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 %}
<div>
    {{ form_label(form.age) }}
    {{ form_errors(form.age) }}
    {{ form_widget(form.age) }}
    {{ form_help(form.age) }}
</div>
{%extends'base.html.twig%}
{%block title%}Symfony{%endblock%}
{%block body%}
{{form_errors(form)}}
{{form_start(form)}}
{{form_widget(form)}
{{form_end(form)}}
{%endblock%}
{%block javascripts%}
{{parent()}}
{%endblock%}

但是我没有看到错误,甚至Symfony在分析器中告诉我有错误。

要获得每个字段的单独错误,您需要执行以下操作:

{% 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 %}
<div>
    {{ form_label(form.age) }}
    {{ form_errors(form.age) }}
    {{ form_widget(form.age) }}
    {{ form_help(form.age) }}
</div>

{{form_标签(form.age)}
{{form_errors(form.age)}
{{form_小部件(form.age)}
{{form_help(form.age)}
你可以阅读更多关于它的内容

基于您的实体,您的表单呈现如下所示

<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>

{{form_标签(form.username)}
{{form_小部件(form.username)}
{{form_errors(form.username)}}
{{form_help(form.username)}
{{form_label(form.plainPassword.first)}
{{form_小部件(form.plainPassword.first)}
{{form_errors(form.plainPassword.first)}
{{form_help(form.plainPassword.first)}
{{form_label(form.plainPassword.second)}
{{form_小部件(form.plainPassword.second)}
{{form_errors(form.plainPassword.second)}
{{form_help(form.plainPassword.second)}
这是基于您的实体,并将被视为登录表单。当然,您必须根据您的要求添加其他字段,一个按钮和一些html,或者您可以使用bs3或bs4等的表单主题。 搜索手册,您将找到更多信息。
你也应该编辑你的帖子,并在那里添加你的实体和html小枝。

你是从模板开始的吗
{{form_start(form)}
?或者你可以发布你的列表。html.twig?@M.Kebza我更新了代码。错误显示在表单组中。但是我需要它,我为每一个想法感到高兴!在
form\u errors
之前尝试移动
form\u start
。测试了它,但我没有看到任何错误。“年龄”从何而来?这是实体的名称吗?在上面的示例中,年龄来自实体。如果在实体中有$age,那么在formType类中,yo将在生成器中有该字段。这意味着,当您为表单创建一个视图并加载细枝时,您可以使用form.variable_names访问它,这就是我创建表单的方式
$item=new User()
我是否使用
{form_label(form.User)}}
?否。发布您的实体和表单类,我将向您展示一个examplelist.html.twig:User.php:PagesController.php:我喜欢显示错误,而不是显示在表单的位置,我想显示在
{page.name}