我的项目使用带有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
,它返回1
或empty 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> {{ 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
下面。希望这有帮助。