我的项目使用Symfony和Twig作为模板引擎。我有一个嵌入式表单,我在其中进行一些验证。我想显示这样的验证:
{% 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&gt; 0,但即使出现错误,它也始终返回零长度。
我看到了一些对error_bubblig的引用,我试图为表单和表单类中的特定字段启用/禁用它,它对form.field.vars.valid或form.field没有任何影响。 vars.errors |。长度
我的项目使用了Symfony 2.3.6,为了解决这个问题,我升级到2.3.22,然后做2.6并且问题仍然存在。
任何有帮助的帮助。感谢
也有人可以指点我的error_bubbling文档/示例吗?搜索这个问题我已经看到了一些引用,但是找不到一个很好的解释。
答案 0 :(得分:1)
我为之前的项目实施了类似的功能。我已使用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
之下。希望这会有所帮助。