2014-03-30 30 views
0

我只是學習如何使用fosuserbundle,我只是說「名」列實體和數據庫字段,而現在,登記表是這樣表示:Symfony2的FosUserBundle訂購登記表單字段

Email  :[_______________________________] 
Username :[_______________________________] 
Password :[_______________________________] 
Verification:[_______________________________] 
Name  :[_______________________________]<-name 

我的問題是如何使它像這樣的命令,因爲我後來添加了'name'字段。

Email  :[_______________________________] 
Name  :[_______________________________]<-order name here 
Username :[_______________________________] 
Password :[_______________________________] 
Verification:[_______________________________] 

我應該從數據庫表或從Form工廠訂購它嗎?

感謝,

+0

通常,我向數據庫添加一個「排序」列,然後用它來排序。然而,它可能是矯枉過正您的情況,如果你只是有幾個值(在這種情況下,你可以做[這](http://stackoverflow.com/questions/8322849/mysql-order-by-specific-id-values) )。 – Mike

回答

1

複印供應商/ friendsofsymfony /用戶束/ FOS/UserBundle /資源/視圖/註冊/ register_content.html.twig到應用程序/資源/ FOSUserBundle /視圖/註冊/ register_content.html.twig和作出這樣的變化:

供應商/ friendsofsymfony /用戶束/ FOS/UserBundle /資源/視圖/註冊/ register_content.html.twig

<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register"> 
    {{ form_widget(form) }} 
    <div> 
     <input type="submit" value="{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}" /> 
    </div> 
</form> 

應用程序/資源/ FOSUserBundle /視圖/註冊/ register_content .html.twig

<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register"> 
    {{ form_start(form) }} 
    {{ form_errors(form) }} 

    {{ form_widget(form.email) }} 
    {{ form_widget(form.name) }} 
    {{ form_widget(form.username) }} 
    {{ form_widget(form.plainPassword.first) }} 
    {{ form_widget(form.plainPassword.second) }} 

    {{ form_end(form) }} 
    <input type="submit" value="{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}" /> 
</form> 
+1

每個字段/項目應form_row不form_widget –

+0

的{{form_end(表)}}一定要來提交輸入標籤 –

0

作爲@ repincln的答案做到這一點的一種方法。但其他解決方法是更新表單構建器,因爲您已經擴展到添加字段。我認爲,如果您只是在構建表單時重新安排表單,它會更容易/更乾淨。假設你按照FOSUserBundle Documentation

public function buildForm(FormBuilderInterface $builder, array $options){ 

    $builder 
     ->add('email', 'email', array('label' => 'form.email', 'translation_domain' => 'FOSUserBundle')) 
     ->add('name') 
     ->add('username', null, array('label' => 'form.username', 'translation_domain' => 'FOSUserBundle')) 
     ->add('plainPassword', 'repeated', array(
      'type' => 'password', 
      'options' => array('translation_domain' => 'FOSUserBundle'), 
      'first_options' => array('label' => 'form.password'), 
      'second_options' => array('label' => 'form.password_confirmation'), 
      'invalid_message' => 'fos_user.password.mismatch', 
     )) 
     ; 
} 

使用哪一個你喜歡的,

快樂編碼...

+0

後,此不爲我莫名其妙地工作...... – Deskin

+0

不知道爲什麼向下票!注意:現在fos userbundle文檔已移至symfony網站。 [FOSUserBundle文檔](https://symfony.com/doc/master/bundles/FOSUserBundle/overriding_forms.html) – xiidea