表单 – Symfony2中是否可以只显示字段类型?

我希望只有显示字段来呈现永远不会被更改或提交的数据.

bootstrap’s static controls相似.

我需要在不破坏表单结构或样式的情况下在表单中显示对象数据.我希望这些数据使用与所有其他输入相同的模板,但不将其渲染为动态输入.

我想到了实现这一目标的几种方法,有些是简单的黑客攻击,有些看起来更合法,但我不知道是否有更标准的方法来做到这一点.

这是我没有按特定顺序考虑的选项列表:

>对字段使用只读属性:它感觉不太好,我不希望用户觉得他们可以改变某些东西,但由于某种原因不允许这样做.
>破解模板以输出除输入元素之外的其他内容:对我来说似乎非常讨厌,此外还需要处理服务器端提交的缺失字段.
>扩展字段类型以创建它们的仅显示版本.我认为这不安全.
>编写自定义fieldType来完成工作.此选项可以用作其他字段的基本类型.

我认为最好的解决方案是选项3或4.
我还没有找到的唯一方法是如何处理提交时丢失的字段.

我认为拥有这种类型的字段很重要,因为它允许重用表单类型逻辑.否则我最终会编写如下所示的twig模板:

<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>

最后,是否有人有更好的想法或认为这种方法完全有缺陷?

最佳答案 您可以使用disabled属性:

{{ form_row(form.field1, {'attr': {'disabled': 'disabled'}}) }} 

另请参阅How to Dynamically Generate Forms Using Form Events食谱条目.

点赞