2011-03-17 37 views
0

的成員我有一個sfGuardGroup列的表,因此當用戶登錄時,他們只能看到他們組中的用戶所做的記錄。sfDoctrineGuard - 只獲得用戶組登錄用戶是

創建記錄時我希望爲sfGuardGroup提供一個選擇框,其中只包含登錄用戶所屬的組。

任何人都知道如何做到這一點嗎?

感謝

回答

0

在形式::配置

  1. 獲得用戶:使用sfContex ::的getInstance() - >的getUser()(圖省事,不推薦),或從控制器注入sfUser選項

    $ this-> form = new myAwesomeUserForm(array(),array('user'=> $ this-> getUser()));

  2. 使用sfWidgetFormChoice

  3. 使用sfGuardSecurityUser :: getGroups($用戶> getGroups)設置了sfWidgetFormChoice部件的選擇。這裏$ USER是MYUSER實例> sfGuardSecurityUser
  4. 不要忘記驗證
+0

感謝回答,對不起,如果我的聲音有點啞,但是這是你的意思:[代碼]公共功能配置() { \t $ user = sfContext :: getInstance() - > getUser(); (array'('model'=> sfGuardSecurityUser :: getGroups($ user-> getGroups),'add_empty'=> false));這個函數可以用來創建一個數組, } [code] – dazpinto 2011-03-18 15:09:55

+0

差不多。您不需要使用sfWidgetFormDoctrineChoice,只需使用sfWidgetFormChoice – cuhuak 2011-03-18 17:24:42

+0

我得到錯誤 'code'嚴格標準:非靜態方法sfGuardSecurityUser :: getGroups()不應該被靜態調用,假設$ this來自C:\中不兼容的上下文。 xampp \ htdocs \ DSMS \ lib \ form \ doctrine \ slideForm.class.php on line 16 注意:未定義的屬性:myUser :: $ getGroups位於C:\ xampp \ htdocs \ DSMS \ lib \ form \ doctrine \ slideForm。 class.php on line 16'code' 是不是我把它放在lib \ form \ doctrine \ *** Form.class.php中? – dazpinto 2011-03-18 19:36:04