海蘭關係,兩個表sfDoctrineGuard用戶表(symfony的)
我已經在我的web應用程序啓動誰的用戶需要進行autenticated與它合作的一部分。我有兩個相關的表格:客戶和企業......第一個是想要購買產品的用戶,第二個是想要銷售產品的「用戶」。
什麼是更好的方法來做到這一點?與user_table的關係1:1?我怎麼能區分一個用戶類型是什麼?由於用戶類型只能編輯一些信息,企業可以訪問另一個模塊...
非常感謝。
海蘭關係,兩個表sfDoctrineGuard用戶表(symfony的)
我已經在我的web應用程序啓動誰的用戶需要進行autenticated與它合作的一部分。我有兩個相關的表格:客戶和企業......第一個是想要購買產品的用戶,第二個是想要銷售產品的「用戶」。
什麼是更好的方法來做到這一點?與user_table的關係1:1?我怎麼能區分一個用戶類型是什麼?由於用戶類型只能編輯一些信息,企業可以訪問另一個模塊...
非常感謝。
您可以在模型上使用hasReference()
函數。
E.g.模型Customer
有這樣一個關係到User
:
Customer:
relations:
user:
local: id
foreignID: id
foreignAlias: customer
然後你就可以測試用戶是否是類型的客戶(控制器):
$this->getUser()->getGuardUser()->hasReference('customer');
爲了使這個簡單,你可以添加此方法您myUser
類:
public function isCustomer() {
return $this->getGuardUser()->hasReference('customer');
}
同一門課程的企業。
即使使用兩個不同的表格,您也可以使用hasCredential()
方法,如果您只想檢查權限,這是最簡單的方法。
如果你想訪問企業和客戶用戶的某些屬性,你也可以結合使用這兩種方法。
更新:
好吧,假設客戶和企業用戶有不同的權限,我會去的用戶羣方法。這更適合sfGuard的組模型。如果您知道用戶在組Customer
中,則知道該用戶具有對客戶對象的引用。
但是,這意味着您必須將正確的組分配給新用戶才能正常工作。
你的桌子真的需要分開嗎?如果沒有,您可以使用sfGuard插件提供的標準sf_guard_user表格用於這兩種類型的用戶,然後使用組功能將用戶分配給「客戶」組或「企業」組。
檢查用戶所屬的組將允許您顯示(或隱藏)該用戶類型的適當內容。像這樣的事情在你的行動:
if ($this->getUser()->hasCredential("enterprise"))
{
// code related to Enterprise customers only
}
或視圖/模板使用$sf_user
變量。
謝謝richsage,我會試試看。 – nebur85 2010-02-04 21:22:32
謝謝felix我會試試看... Felix,另一個問題...更好的做你所說的「創建一個叫做iscustomer的函數」或者用它來管理它? – nebur85 2010-02-04 21:21:58
是的,我會正確分配。 – nebur85 2010-02-05 14:23:17