您可以設置形式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 }) }}
注:字符串已拆分爲多行以提高可讀性。
hi @Jd patel,您可以使用[Symfony doc](http://symfony.com/doc/current/book/forms.html#form-theming)來覆蓋表單的默認佈局,我希望這會幫助您自定義您的表單輸出。 – kuldipem 2014-10-08 06:48:01
如果您在渲染時遇到問題,例如:您在編輯表單中從創建表單中刪除了一個字段,然後每次檢查該字段是否已定義,例如:{%if form.task defined%} {{ form_row(form.task)}} ... {%endif%}。如果你在後端有問題,那麼你必須使用eventlisteners.see http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html#customizing-your-form-based-on-the-底層數據 – user2268997 2014-10-08 07:31:03