2014-10-08 87 views
0

我已經開始使用symfony。相同的自定義表單編輯和創建頁面symfony

我面臨創建和編輯表單自定義的問題。

我已經創建了一個具有crud的實體。現在,我想自定義「創建表單」 new.html.twig,我與

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

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

我的問題是「編輯表單」這樣做的:我應該怎麼做,我可以使用相同的自定義表單不重複?

在此先感謝..

+0

hi @Jd patel,您可以使用[Symfony doc](http://symfony.com/doc/current/book/forms.html#form-theming)來覆蓋表單的默認佈局,我希望這會幫助您自定義您的表單輸出。 – kuldipem 2014-10-08 06:48:01

+0

如果您在渲染時遇到問題,例如:您在編輯表單中從創建表單中刪除了一個字段,然後每次檢查該字段是否已定義,例如:{%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-b​​ased-on-the-底層數據 – user2268997 2014-10-08 07:31:03

回答

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 }) }} 

注:字符串已拆分爲多行以提高可讀性。

相關問題