【问题标题】:How to hide form fields in twig template?如何在树枝模板中隐藏表单字段?
【发布时间】:2016-03-09 18:03:43
【问题描述】:

我有一个包含两个 TextType 字段的 Symfony 表单。如果某个检查评估为false,我不想显示input 字段,而是输出字段的静态内容并将表单字段包含为hidden 字段。我该怎么做?

【问题讨论】:

    标签: forms symfony hidden-field


    【解决方案1】:

    您可以通过假装表单字段已被渲染来阻止任何输出:

    {{ form_start(form) }}
        {% if someValue == true %}
            {% do form.fieldName.setRendered() %}
        {% endif %}
    {{ form_end(form) }}
    

    【讨论】:

    • 很高兴知道。谢谢!
    • 这就是我要找的!谢谢
    • 这其实是我想要的 ;)
    • 我有一个问题;当我使用此代码并将表单数据更改为 null 但我在表单中有数据时
    • 是的,如果您有一个字段的值并希望保留它,您需要使用此问题中的其他方法。此答案应该删除 HTML 代码中字段的所有痕迹,这也会导致在传输表单时未设置值。
    【解决方案2】:

    您可以使用HiddenType, 或隐藏模板中的字段:

    {{ form_start(form) }}
        {% if someValue == true %}
            {{ form_widget(form.fieldName) }}
        {% else %}
            {{ form_widget(form.fieldName, { 'attr': {'class': 'hidden-row'} }) }}
        {% endif %}
        {# other fields... #}
    {{ form_end(form) }}
    

    或者您可以在 FormType 中使用像 FormEvents::PRE_SET_DATA 这样的 FormEvents。 (doc)

    【讨论】:

    • 我希望在 form_row 中进行某种切换,但我怀疑这在 Symfony 中没有实现...
    • @GottliebNotschnabel 实际上是 :),我更新了我的答案
    • 不,我的意思不是通过 CSS 隐藏它,而是将其渲染为隐藏字段。但我看到你的第二种方法允许这样做。太好了,谢谢!
    猜你喜欢
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 2012-07-27
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多