Symfony2 formbuilder - 实体只读字段作为标签

时间:2014-07-25 07:48:20

标签: php symfony

symfony2中是否有可能将实体的只读字段显示为标签而不是文本字段或其他什么?

我目前正在使用以下代码,但使用禁用的文本字段感觉不太复杂:

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('readonlyfield', 'text', array('property_path' => 'readonlyfield.displayString','disabled' => true));
        $builder->add('editablefield', 'textarea');
    }

我正在使用symfony 2.4.4 ..

编辑:

我在另一种形式中使用此表单类型:

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('mySubEntities', 'collection', array('type' => new MySubEntryType()));
        $builder->add('save_to_db',  'submit', array('label' => 'Submit'));
    }

twig file:

 {{ form_start(form) }}
    {% for row in form.mySubEntities %}
        <li>
        <ul>
        <table>
        <tr><td>{{ form_label(row.readonlyfield) }} </td><td>{{ form_widget(row.readonlyfield) }}</td></tr>     
        <tr><td>{{ form_label(row.editablefield) }}</td><td> {{ form_widget(row.editablefield) }}</td></tr>
        </table>
        </ul>
    </li>
    {% endfor %}


{{ form_end(form) }}

2 个答案:

答案 0 :(得分:1)

为什么不在模板中渲染实体属性而不是将其作为表单的一部分?您可以创建自己的FieldType,但这不是我推荐的。如果您希望将值显示为类似文件的表单,我将使用readonly属性。

答案 1 :(得分:1)

您可以使用{{ form.vars.value.yourfield }}在表单中访问值。

您有嵌套/集合,因此请使用{{ row.vars.value.yourfield }}