繁体   English   中英

简单检查表单域在 Twig 模板中是否有错误

[英]Simple check if form field has errors in Twig template

在 Twig 模板中,我检查一个字段是否有这样的错误:

{% if form.points.get('errors') is not empty %}

有没有类似的方法:

{% if form.points.hasErrors() %}

做起来更简单? 这不是一个很大的区别,但如果我不能做得更容易,为什么不呢。

我发现更好的方法是使用这种代码

{% if not form.vars.valid %}
<div class="alert alert-error">
    {{ form_errors(form) }}
</div>
{% endif %}

那个方法不存在。 我通常做{% if form.points.vars.errors|length %}

您还可以在覆盖字段渲染时检查错误:

{% block field_row %}
{% spaceless %}    
    <div class="control-group {% if errors %}error{% endif %}">
      {{ form_label(form) }}
      <div class="controls">
        {{ form_widget(form) }}        
        {{ form_errors(form) }}        
      </div>
    </div>    
{% endspaceless %}
{% endblock field_row %}

对于更深入的表单定制,我这样做:

<div class="form-group {% if form.MYFORMINPUT.vars.valid==false %}has-error{% endif %}">
//some twisted divs
{{form_label(form.MYFORMINPUT)}}
{{form_widget(form.MYFORMINPUT)}}
</div>

Sf2.5

由于空数组解析为 false,您可以将现有检查缩短为

{% if form.WIDGET_NAME.get('errors') %}

这是我使用的:

 <div class="form-group {{ form.brand.vars.errors|length > '' ? 'has-error' }}">

如果您使用的是 symfony 4,则可以使用此代码检查错误是否存在

{% if form_errors(registrationForm) %}
    <div class="alert alert-danger">        
        {{ form_errors(registrationForm) }}
    </div>
{% endif %}

检查表单是否有错误的最简单方法:

{% 如果不是 form.vars.errors.valid %} {% endif %}

Symfony 版本 >= 4

正确的代码是(对于Symfony 3.4):

{% if form.vars.errors|length %}

我创建了一个树枝扩展来处理这个:我的扩展

public function hasError($string)
{
    if(strlen($string) > 4)
        return true;
    return false;
}

我在树枝上像这样使用它

{{ has_error(form_errors(form.username)) ? form_errors(form.username) : '' }}

我遇到了类似的问题,但我的树枝模板中不存在form.points

我必须获取控制器中的错误数量,然后将其作为变量传递到我的模板中。 $form->getErrors()行为与您在控制器中的预期不同。 有关将正确获取表单错误的函数,请参阅此 SO 问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM