Forms 是否可以在Symfony2中使用仅显示字段类型?
我希望只显示字段,以呈现永远不会更改或提交的数据 类似于 我需要在不破坏表单结构或样式的情况下显示表单中的对象数据。我希望此数据使用与所有其他输入相同的模板,但不将其呈现为动态输入 我想到了几种方法来实现这一点,有些是普通的黑客,有些似乎更合法,但我不知道是否有更标准的方法来实现这一点 以下是我没有按特定顺序想到的选项列表:Forms 是否可以在Symfony2中使用仅显示字段类型?,forms,symfony,Forms,Symfony,我希望只显示字段,以呈现永远不会更改或提交的数据 类似于 我需要在不破坏表单结构或样式的情况下显示表单中的对象数据。我希望此数据使用与所有其他输入相同的模板,但不将其呈现为动态输入 我想到了几种方法来实现这一点,有些是普通的黑客,有些似乎更合法,但我不知道是否有更标准的方法来实现这一点 以下是我没有按特定顺序想到的选项列表: 对字段使用只读属性:这感觉不太好,我不想让用户感觉他们可以更改某些内容,但出于某些原因,不允许这样做 黑客的模板输出的东西以外的输入元素:似乎非常讨厌我,此外,这将是必要的
<form>
{# This is the average writtable field #}
{{ form_row(form.field1) }}
{# This is the display-only field, notice I have to replicate
markup. Even if I wrote a macro, which I did, I would still
have to replicate markup in the macro.
#}
<label>Field 2</label>
<div>{{ the_object.field2 }}</div>
</form>
{#这是平均可写字段#}
{{form_row(form.field1)}
{#这是仅显示的字段,请注意,我必须复制
即使我写了一个宏,我还是会
必须在宏中复制标记。
#}
字段2
{{the_object.field2}}
最后,是否有人有更好的想法或认为这种方法完全有缺陷?您可以使用
disabled
属性:
{{ form_row(form.field1, {'attr': {'disabled': 'disabled'}}) }}
另请参阅cookbook条目。我最后使用只读属性和自定义模板(选项1和2的组合)更改只读属性启用时字段的呈现方式 启用readonly属性的字段预计不会被发送(它们使用disabled属性呈现,与@elnur指出的相同),如果在POST中出现,则会被拒绝,因此我所要做的就是更改模板以不同的方式呈现 以下是一个示例模板:
{% block field_widget %}
{% spaceless %}
{% if read_only %}
<span {{ block('widget_container_attributes') }} >
{{ value|default(' ')|raw }}
</span>
{% else %}
{% set type = type|default('text') %}
<input type="{{ type }}" {{ block('widget_attributes') }} value="{{ value }}" />
{% endif %}
{% endspaceless %}
{% endblock field_widget %}
{%block field\u widget%}
{%spaceless%}
{%if read_only%}
{{value | default(' ')| raw}
{%else%}
{%set type=type | default('text')%}
{%endif%}
{%endspaceless%}
{%endblock字段\小部件%}
另一种方法是使用表单扩展为所有字段创建新属性,但只读属性适合我的需要