2012-10-24 50 views
2

我寫了一個Yesod認證插件,用於發送邀請碼,然後需要註冊。我想在插件中包含的一件事是一個包含創建邀請的表單的小部件;該表單將發佈到auth插件中的路由。我遇到的麻煩是爲小部件確定一個類型簽名,它允許創建適當的URL,也可以在主站點的處理程序中使用。該類型應該適用於可在主站點中使用的子站點小部件?

剝離下來的要領,微件看起來像:

invitationWidget :: GWidget Auth m() 
invitationWidget = do 
    tm <- lift getRouteToMaster 
    [whamlet|<form [email protected]{tm inviteR}>|] 

inviteR :: AuthRoute 
inviteR = PluginR "invite" ["invite"] 

麻煩的是,指定Auth亞位點的小窗口意味着我不能直接將其嵌入到GHandler master master a類型的處理設備(在確切的錯誤是Couldn't match type `App' with `Yesod.Auth.Auth')。但是,如果未指定子網站,例如invitationWidget :: GWidget s m(),那麼我看不到一個方法來得到inviteR(錯誤是Could not deduce (MonadLift (GHandler Auth m) (GWidget s m)))。

回答

相關問題