2013-05-27 166 views
3

我正在創建一個應用程序,訪問者可以上傳一些內容(僅限受邀請的人員)。最後,如果他們沒有登錄,他們會被要求登錄或創建一個用戶。如果他們創建一個新用戶,我只想讓他們填寫他們的姓名和電子郵件。FOSUserBundle註冊無密碼

將生成一個密碼,並且一封郵件將被髮送給用戶並且鏈接可以在他們想要的時候更改他們的密碼(只是爲了使程序儘可能低)。

我似乎無法從註冊表中刪除密碼字段。有人可以幫我嗎。我創建一個自定義表單類型,服務並註冊它。我也把自定義模板的應用程序/資源文件夾等等。雖然正在使用我的自定義窗體類型和模板,密碼仍然出現...

class RegistrationFormType extends BaseType { 

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

    // add your custom field 
    $builder->add('username'); 
    $builder->add('email'); 
    } 

    public function getName() { 
    return 'val_user_registration'; 
    } 

} 

回答

2

你並不需要擴展父窗體。 ..在這種情況下你最好不要這樣做。

只需創建一個用戶名/電子郵件的形式,並在自定義的註冊方法然後將它保持到數據庫中創建自己的新的用戶實體(不要忘記設置在你新建的用戶usernameCanonical屬性)。

FOSUserBundle在註冊過程中調用了幾個與密碼相關的東西,在這種情況下您不需要這些東西,也不會輕易避開。

您可以將實體(與新創建的密碼)傳遞給FOSUserBundle的的UserManager服務的更新方法您完成後的密碼/電子郵件步即可。