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

时间:2014-12-01 18:51:21

标签: php forms symfony twig

我的项目使用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文档/示例吗?搜索这个问题我已经看到了一些引用,但是找不到一个很好的解释。

1 个答案:

答案 0 :(得分:1)

我为之前的项目实施了类似的功能。我已使用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之下。希望这会有所帮助。