如何在Symfony2 / Twig中识别隐藏的表单字段

时间:2012-04-21 06:03:42

标签: symfony hidden twig

我是Symfony2的新手并尝试渲染表单。基础知识很清楚,但隐藏的表单字段存在问题。

我尝试在不同的表格单元格中渲染每个表单小部件。但是当使用for循环时,第一个单元格将填充_token小部件。但我喜欢用form_rest渲染隐藏的字段。

<table>
  <tr>
    {% for element in form %}
      <td class="header">{{ form_widget(element) }} </td>
    {% endfor %}
  </tr>
</table>

我正在寻找的是像

<table>
  <tr>
    {% for element in form %}
      {% if element.type != 'hidden' %} 
        <td class="header">{{ form_widget(element) }} </td>
      {% endif %}
    {% endfor %}
  </tr>
</table>

任何人都可以帮助我吗?非常感谢。

4 个答案:

答案 0 :(得分:4)

对于Symfony 2.0,您曾经这样做过:

{% if "hidden" not in element.vars.types %}

对于Symfony 2.1,您必须这样做:

{% if "hidden" not in element.vars.block_prefixes %}

我花了很长时间才解决这个问题,因为根本没有关于它的文档。我也很困惑为什么你不能这样做:

{% if "hidden" element.vars.type %}

我的意思是,这不是最明显的方式吗?

答案 1 :(得分:2)

请尝试以下代码

<table>
  <tr>
    {% for element in form %}
      {% if not element.ishidden %} 
        <td class="header">{{ form_widget(element) }} </td>
      {% endif %}
    {% endfor %}
  </tr>
</table>

希望这会对你有所帮助。 快乐的编码!!!

答案 2 :(得分:0)

在黑暗中拍摄一下,但也许你可以在if语句中使用标签?

类似{%if form_label(element)!=“hidden”%}?

答案 3 :(得分:0)

试试这个:

<table>
  <tr>
    {% for element in form %}
      {% if "hidden" not in element.vars.types %}
        <td class="header">{{ form_widget(element) }} </td>
      {% endif %}
    {% endfor %}
  </tr>
</table>