相同的自定义表单用于编辑和创建页面symfony

时间:2014-10-08 06:40:04

标签: forms symfony

我已经开始使用symfony。

我面临创建和编辑表单自定义的问题。

我创建了一个带有crud的实体。现在我想定制'创建表单' new.html.twig,我正在做

{{ form_start(form) }}
    {{ form_errors(form) }}

    {{ form_row(form.task) }}
    {{ form_row(form.dueDate) }}
{{ form_end(form) }}

我的问题是编辑表单':我该怎么做才能使用相同的自定义表单而不重复?

提前感谢..

1 个答案:

答案 0 :(得分:0)

您可以使用几种不同的方法动态设置表单action

首先,您可以将操作作为变量传递给模板,该变量对于每个父模板都是不同的,如..

new.html.twig

{{ include('AcmeBundle:Form:_form.html.twig', 
    {'form': form, 'action': path('create_route') }) }}

edit.html.twig

{{ include('AcmeBundle:Form:_form.html.twig', 
    {'form': form, 'action': path('edit_route', {'id': form.vars.value.id }) }}
    // Or the actual object id if the object has been passed to the template

_form.html.twig

{{ form_start(form, {'action': action }) }}

或者您可以检查当前对象中是否存在id,然后根据该对象设置操作。该版本确实使模板的可重用性降低,因为操作是硬编码的,但如果您计划为多个不同的页面使用相同的表单,那么这只会是一个问题。

_form.html.twig

{% set action = form.vars.value.id is null 
    ? path('create_route') 
    : path('edit_route', {'id': form.vars.value.id })
%}
{{ form_start(form, {'action': action }) }}

注意:为了便于阅读,字符串已拆分为多行。