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

时间:2012-01-18 17:36:34

标签: symfony twig symfony-forms

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

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

有没有像:

这样的方法
{% if form.points.hasErrors() %}

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

10 个答案:

答案 0 :(得分:100)

我找到的更好的方法是使用这种代码

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

答案 1 :(得分:83)

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

答案 2 :(得分:17)

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

{% 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 %}

答案 3 :(得分:12)

为了更深入的表单定制,我做了:

<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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

这就是我使用的:

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

答案 6 :(得分:0)

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

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

答案 7 :(得分:-1)

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

Rs

答案 8 :(得分:-2)

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

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

答案 9 :(得分:-2)

我已经创建了一个枝条扩展来处理这个问题: 我的扩展

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

我在树枝上这样使用它

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