2012-10-24 2 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))입니다).

답변