检查树枝模板中的验证错误


Check for validation errors in twig template

我的项目使用带有Twig的Symfony作为模板引擎。我有一个嵌入式表单,我可以在其中进行一些验证。我想像这样显示验证:

{% if not form.field.vars.valid %}
     <span style='color: red;'>{{ form_label(form.field) }}</span>
{% else %}
    {{ form_label(form.field) }}
{% endif %}

情况是,即使存在错误,form.field.vars.valid也始终有效。我知道表单验证正在工作,因为我在那里删除并看到错误报告给表单。此外,提交表单后,Symfony在具有焦点时会正确呈现字段周围的红色边框。但我想为用户提供更清晰的视觉参考。我也用form.field.vars.errors|length>0尝试过这个,但即使有错误,它也总是返回零长度。

我看到了一些对error_bubblig的引用,我试图为表单和表单类中的特定字段启用/禁用它,但它对form.field.vars.valid或form.field.vars.errors|length没有任何影响。

我的项目使用了Symfony 2.3.6,为了解决这个问题,我升级到2.3.22,然后做2.6,问题仍然存在。

任何帮助都表示赞赏。谢谢

也可以有人可以指出我error_bubbling文档/示例吗?搜索这个问题,我看到了一些对它的引用,但找不到一个很好的解释。

我已经为我以前的项目实现了类似的效果。我用过formBooking.vars.valid,它返回1empty string.这里有一些表单片段向您展示我如何使用error|length

    <div class="form-group col-lg-4">
        <div class="row">
            <div class="col-sm-12 {{ form.field.vars.errors|length > 0 ? 'has-error' }}">
                <i class="fa fa-calendar"></i>&nbsp;{{ form_label(form.field, 'Some Label') }}
                {{ form_widget(form.field, {'attr': {'class': 'datepicker form-control', 'placeholder':'Some label'}}) }}
            </div>
            {{ form_errors(form.field, {'attr': {'class': 'error'}}) }}
        </div>
    </div>
基本上,我已经用div包装了

小部件,如果字段有错误has-error则添加类,然后使用css我按照我想要的方式设置它。 form_error可以放在任何你想要的地方,我决定把它放在form_widget下面。希望这有帮助。