Forms 如何检查窗体在细枝中是否有错误?
除了直接附加到表单字段的表单字段特定错误消息之外,我想在表单上方显示一条消息,说明表单包含错误 如果表单有错误,如何签入Symfony3细枝模板?在那里:Forms 如何检查窗体在细枝中是否有错误?,forms,error-handling,symfony,Forms,Error Handling,Symfony,除了直接附加到表单字段的表单字段特定错误消息之外,我想在表单上方显示一条消息,说明表单包含错误 如果表单有错误,如何签入Symfony3细枝模板?在那里: {%if form.get('errors')不是空的%} 您的表单有错误。请检查下面的字段。 {%endif%} 但这在Symfony3中不起作用。有什么想法吗?(form.vars.errors不起作用。)使用form.vars.errors: {%if form.vars.errors不为空%} {# ... #} {%endif%}
{%if form.get('errors')不是空的%}
您的表单有错误。请检查下面的字段。
{%endif%}
但这在Symfony3中不起作用。有什么想法吗?(
form.vars.errors
不起作用。)使用form.vars.errors
:
{%if form.vars.errors不为空%}
{# ... #}
{%endif%}
注意请注意,如果根窗体有错误(或者如果子窗体有错误并允许将错误冒泡到根窗体),则此值仅计算为true。如果表单的常规子元素有错误,则不会计算为空
因此,valid
变量可能更合适:
{%if not form.vars.valid%}
{#…错误!#}
{%endif%}
使用symfony 3.4时,无法再通过form.vars.errors执行此操作,除非您有error\u bubbling=true
和formcomponent=false
,这是不可能的
您可以使用如下脏代码:
{% set errors = false %}
{% for child in form.children %}
{% if child.vars.errors is defined and child.vars.errors|length %}
{% set errors = true %}
{% endif %}
{% endfor %}
{% if errors %}
[...]
{% endif %}
如果您试图使用AuthenticationUtils构建登录表单,请在controller中使用如下代码:
//Get the login error if there is one
if ($error = $authenticationUtils->getLastAuthenticationError()) {
//Add error message to mail field
$form->get('mail')->addError(new FormError($error->getMessageKey()));
}
//Last username entered by the user
if ($lastUsername = $authenticationUtils->getLastUsername()) {
$form->get('mail')->setData($lastUsername);
}
//Render view
return $this->render('@ExampleBundle/template.html.twig', array('form' => $form->createView(), 'error' => $error));
并在twig模板中使用如下简单代码:
{% if error %}
[...]
{% endif %}
form.vars.errors不是空的
总是false
,这不起作用。但是不是form.vars.valid
有效。谢谢@GottliebNotschnabel如果答案对你有效,请将其标记为已接受,以便其他人可以轻松找到解决方案。是的,当然。但是imhoform.vars.error
总是空的。所以这不起作用,你能修改你的答案吗?我相应地编辑了你的答案,如form.vars.error
总是空的,而form.vars.error | length
总是0
。不总是,如果你的根表单有错误(或者如果子表单有错误并且允许将错误冒泡到根表单),它不是空的。
{% if error %}
[...]
{% endif %}