我已经开始使用symfony。
我面临创建和编辑表单自定义的问题。
我创建了一个带有crud的实体。现在我想定制'创建表单' new.html.twig,我正在做
{{ form_start(form) }}
{{ form_errors(form) }}
{{ form_row(form.task) }}
{{ form_row(form.dueDate) }}
{{ form_end(form) }}
我的问题是编辑表单':我该怎么做才能使用相同的自定义表单而不重复?
提前感谢..
答案 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 }) }}
注意:为了便于阅读,字符串已拆分为多行。