2014-12-01 73 views
1

我的项目使用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是即使有错误总是有效的。 我知道表单验证工作,因为我debbuged和看到那里的错误报告的形式。此外,提交表单后,Symfony在焦点处正确呈现该字段周围的红色边框。但我想为用户提供更清晰的视觉参考。 我也试过这个form.field.vars.errors | length> 0,但它总是返回零长度,即使有错误。

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

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

任何帮助apreciated。谢谢

也可以有人可以指向我error_bubbling文档/例子?寻找这个问题我已经看到了一些引用它,但无法找到一个好的解释。

+0

编辑答案以便更清楚。希望这次更好。 – 2014-12-02 14:54:41

回答

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以下。希望这可以帮助。

+0

是的......这与我想要的相似。但是我的情况是,即使form有错误,form.field.vars.errors | length也等于0。所以它打破了这一点。任何想法为什么? – 2014-12-01 22:17:40

+1

它是嵌入式表单吗?因为我有同样的问题,但嵌入式的形式。 – 2014-12-01 22:22:20

+0

是的,这是...所以有一个错误?任何解决方法? – 2014-12-02 01:48:18