Haskell 测试用户是否登录到Hamlet模板
我想测试用户是否经过身份验证,并根据状态显示“登录”或“注销”链接 到目前为止我有Haskell 测试用户是否登录到Hamlet模板,haskell,yesod,hamlet,Haskell,Yesod,Hamlet,我想测试用户是否经过身份验证,并根据状态显示“登录”或“注销”链接 到目前为止我有 $maybe muid <- maybeAuthId <a href=@{AuthR LogoutR} >Logout $nothing <a href=@{AuthR LoginR} >Login maybeAuthId是执行数据库和会话相关操作的一元操作。在哈姆雷特模板的定义中不能有一元动作。想象一下,如果你写了这个(类似的一元动作),会发生什么: $maybe
$maybe muid <- maybeAuthId
<a href=@{AuthR LogoutR} >Logout
$nothing
<a href=@{AuthR LoginR} >Login
maybeAuthId
是执行数据库和会话相关操作的一元操作。在哈姆雷特模板的定义中不能有一元动作。想象一下,如果你写了这个(类似的一元动作),会发生什么:
$maybea>返回(只是“Hi”)
只是#{a}
零美元
没什么
该行动应多久执行一次;每次呈现模板时?什么时候上膛?如果它不只是将“Hello World”打印到终端上,它可能会变得非常混乱,即使这样,它也不是很安全——你希望你的模板文件能够打印到终端上、发射核武器或窃取你的信用卡信息吗
这就是为什么在所有莎士比亚的模板中只允许纯值。您需要这样做:
getMyHandlerR :: Handler RepHtml
getMyHandlerR = do
muid <- maybeAuthId
$(widgetFile "foo")
getMyHandlerR::Handler RepHtml
getMyHandlerR=do
很酷,谢谢。总的来说,我正在慢慢掌握蒙纳德和哈斯克尔的诀窍。
$maybe a <- liftIO (putStrLn "Hello World") >> return (Just "Hi")
<p>Just #{a}
$nothing
<p>Nothing
getMyHandlerR :: Handler RepHtml
getMyHandlerR = do
muid <- maybeAuthId
$(widgetFile "foo")
$maybe uid <- muid
<p>Foo
$nothing
<p>Bar