2013-12-17 59 views
1

我絕對是Symfony的新手,我試圖實現一個只能與invitation 一起使用的註冊表單,但它可以將兩個不同的表單重定向爲兩個不同的角色。針對不同角色的不同註冊表格。 FOSUserBundle

實際上,如果我發送USER_TYPE1角色的邀請,則客戶端只能像USER_TYPE1那樣註冊,如果我發送USER_TYPE2邀請,則客戶端只能像USER_TYPE2那樣註冊(當然,也可以分配相應角色)。

可能嗎?

預先感謝您的幫助

UPDATE:

我想兩個不同的形式,因爲一個用戶將被允許更新文件,但也必須設定自己的位置和其他重要設置。第二個用戶只允許下載第一類用戶上傳的文件,他的個人資料需要完全不同的信息。

+1

基本上,當你存儲邀請令牌時,你應該存儲與之相關的邀請角色,然後在驗證你的表單或者更好地驗證你的域名時,如果類型匹配,你可以與令牌進行比較。 –

+0

是的,但重點是如何創建兩種不同的註冊表格。 –

回答

2

我沒有足夠的信譽來要求詳細信息,但有一點你不清楚的問題是:爲什麼你需要2種不同的形式?在你的問題中,你提到了2個不同的角色,但爲什麼你需要2種不同的形式?如果你真的需要2種不同的形式,那麼你應該先: - 創建一個新的表單類型 - 創建一個新的視圖(樹枝)

像鮑里斯的建議,我會保持某種令牌每發送一個邀請,將電子郵件地址和角色關聯起來。然後修改您的註冊途徑,所以你可以在那裏通過一個道理,就像這樣:

register: 
    pattern: /signup/{token} 
    defaults: { _controller: MyBundle:Registration:signup } 

在控制器的登記行爲,創建正確的表單類型並顯示相應的樹枝,這取決於相關的作用你剛剛得到的令牌。在處理POST時,再次檢查令牌以查看它是否與電子郵件地址匹配,並在創建用戶時分配適當的ROLE。

public function signupAction($token) { 
    // 1. Get the Token entity matching the $token variable 
    // 2. Create the correct form type 
    // 3. Display the correct twig for GET, assign correct ROLE to new User for POST 
} 

但是你不能按原樣使用FOSUserBundle。您將不得不覆蓋註冊過程。你可以閱讀關於這個的FOSUserBundle文檔。

可以肯定的是,對於您發送的每個邀請,您都應該保留一個具有匹配的電子郵件地址和ROLE(您想要給該人員的角色)的令牌。