我有一个脚手架站点,我在 Home Handler 中使用这段代码。
{-# LANGUAGE TupleSections, OverloadedStrings #-}
module Handler.Home where
import Import
import Yesod.Auth
getHomeR :: Handler RepHtml
getHomeR = do
defaultLayout $ do
maid <- maybeAuthId
setTitle "Welcome!"
$(widgetFile "homepage")
我想访问 maid
我的 homepage.hamlet 文件。但是,我收到以下错误:
Handler/Home.hs:10:17:
Couldn't match expected type `WidgetT site0 IO t0'
with actual type `HandlerT master0 IO (Maybe (AuthId master0))'
In a stmt of a 'do' block: maid <- maybeAuthId
In the second argument of `($)', namely
`do { maid <- maybeAuthId;
setTitle "Welcome!";
$(widgetFile "homepage") }'
In a stmt of a 'do' block:
defaultLayout
$ do { maid <- maybeAuthId;
setTitle "Welcome!";
$(widgetFile "homepage") }
无论我是否在 homepage.hamlet 中放入任何内容,我都会收到上述错误消息。如果我从 Yesod Book(Auth 部分)粘贴 whamlet 代码片段,而不是使用 $(widgetFile "homepage")
,它可以正常工作。
如果我删除对 mayAuthId 的调用,问题也会消失。我猜这与调用 maybeAuthId 和使用 widgetFile 有关,但我不知道如何解决这个问题。任何帮助表示赞赏。
谢谢!