我有一个Symfony表单,其中包含两个字段。如果某个检查评估为,我不想显示字段,而是输出字段的静态内容,并将表单字段作为字段包含。我该如何做到这一点?
{{ form_start(form) }}
{% if someValue == true %}
{% do form.fieldName.setRendered() %}
{% endif %}
{{ form_end(form) }}
您可以使用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) }}
或者您可以在表单类型中使用像FormEvents :: PRE_SET_DATA
这样的FormEvents。
(文档)
form_row
中有某种开关,但我怀疑 Symfony 没有实现这个功能... - Gottlieb Notschnabel{{ form_start(form) }}
<div class="row">
{% if app.user %}
<div class="col-lg-12">
<fieldset>
Login by: {{ app.user.username }}
</fieldset>
</div>
<div class="col-lg-12">
<fieldset>
Mail : {{ app.user.email }}
</fieldset>
</div>
<div class="col-md-12 col-sm-12" style="display: none;">
<fieldset>
{{ form_widget(form.owner, { 'attr': {'class': '', value: 'null'}}) }}
</fieldset>
</div>
{% else %}
<div class="col-md-6 col-sm-12">
<fieldset>
{{ form_widget(form.owner, {'attr': {'class': ''}}) }}
</fieldset>
</div>
{% endif %}
<div class="col-lg-12">
<fieldset>
{{ form_widget(form.content, {'attr': {'class': ''}}) }}
</fieldset>
</div>
<div class="col-lg-12">
<fieldset>
<button type="submit" class="main-button">New</button>
</fieldset>
</div>
</div>
{{ form_end(form) }}