对于可在主站点中使用的子站点窗口小部件,该类型应该是什么?

时间:2012-10-24 18:38:37

标签: haskell yesod

我编写了一个Yesod auth插件,用于邮寄邀请代码,然后需要注册。我想在插件中包含的一件事是一个小部件,其中包含一个用于创建邀请的表单;表单将发布到auth插件中的路由。我遇到的麻烦是找出一个小部件的类型签名,允许创建适当的URL,也可以在主站点的处理程序中使用。

根据要点,小部件看起来像:

invitationWidget :: GWidget Auth m ()
invitationWidget = do
  tm <- lift getRouteToMaster
  [whamlet|<form action=@{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)))。

1 个答案:

答案 0 :(得分:0)

函数addSubWidget应该可以帮助你。