2

登録に必要な招待コードをメールで送信する Yesod 認証プラグインを作成しました。プラグインに含めたいものの 1 つは、招待状を作成するためのフォームを含むウィジェットです。フォームは認証プラグイン内のルートに投稿します。私が問題を抱えているのは、適切な 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)))。

4

1 に答える 1

0

関数addSubWidgetはあなたを助けることができるはずです。

于 2012-10-25T04:34:31.530 に答える