如何自定义编辑表单

时间:2013-11-13 21:20:39

标签: php forms symfony

我已经发布了一个导致这个问题的帖子,但现在我发现了一个问题,所以最好做一个新的干净帖子:

Symfony 2.1.3 with jordillonch / CrudGeneratorBundle

我在一个实体上使用了这个CrudGenerator,其中我有2个需要自动更新的时间戳字段: 我安装了Gedmo以获得时间稳定的功能。

字段是:

cree_le(英文created_at):@ Gedmo \ Timestampable(on =“create”)

and modifiele(in english updated_at) - @Gedmo \ Timestampable(on =“update”)

问题是我想自定义表单以仅显示用户要更新的字段。 当我使用{{form_widget(edit_form)}}使用未定制的edit.html.twig时,更新正在运行,但updated_at的值不会更改,因为旧的值随表单一起提交。 我尝试了几种方法来自定义表单,但我还没有找到解决方案。

此版本的自定义edit.html.twig无效,因为提交的表单无效:

<form class="well" action="{{ path('employee_update', { 'id': entity.id }) }}" method="post" {{ form_enctype(edit_form) }}>
    <input type="hidden" name="_method" value="PUT" />
    <div>
        {{ form_label(edit_form.nom) }}
        {{ form_errors(edit_form.nom) }}
        {{ form_widget(edit_form.nom) }}
    </div>
    <div>
        {{ form_label(edit_form.email) }}
        {{ form_errors(edit_form.email) }}
        {{ form_widget(edit_form.email) }}
    </div>
    <div>
        {{ form_label(edit_form.telephone, 'Téléphone') }}
        {{ form_errors(edit_form.telephone) }}
        {{ form_widget(edit_form.telephone) }}
    </div>
    <div>
        {{ form_label(edit_form.actif) }}
        {{ form_errors(edit_form.actif) }}
        {{ form_widget(edit_form.actif) }}
    </div>
    <input type="hidden" id="too_employeebundle_employee_cree_le" name="too_employeebundle_employee[cree_le]" value="{{ entity.creele|date('Y-m-d H:i:s') }}">
    <input type="hidden" id="too_employeebundle_employee_modifie_le" name="too_employeebundle_employee[modifie_le]" value="{{ entity.modifiele|date('Y-m-d H:i:s') }}">
    {{ form_widget(edit_form._token) }}
    <p>
        <button type="submit" class="btn btn-success">{{ 'views.edit.editbutton'|trans({}, 'JordiLlonchCrudGeneratorBundle') }}</button>
    </p>
</form>

当然我做错了什么但谁能告诉我怎么回事?

1 个答案:

答案 0 :(得分:1)

从Form Class中删除cree_le和modifiele,不要在模板上渲染它们。 然后让Timestampable完成他的工作吧!当你创建一些东西时,cree_le值将被自动设置。当你改变某些东西时,modifiele值也会自动设置。