1

有时,网站/应用程序需要在请求后向用户显示多条消息。不幸的是,Yesod 的消息工具(如果我对docs理解得很好)似乎仅限于每个请求一条消息,每条新消息都会覆盖前一条消息。我认为我可以在处理程序中使用 writer monad 来解决这个问题,在使用“setMessage”保存之前将消息列表呈现为 HTML,但是对于 Haskell 来说相当新,我不知道如何集成一个额外的monad 到处理程序的类型签名(事实上,我什至不确定这是否可行)。那么,我想知道 Yesod 中多会话消息的推荐方法是什么?谢谢。

4

1 回答 1

2

您正确阅读了这本书,您只能收到一条信息。但是您可以在该消息中显示任何 HTML。您可以使用blaze-html所需的任何 HTML 生成消息。

这个片段就是这样做的:

import Text.Blaze.Html5

-- Create a message.
message :: Html
message = do
    p "Welcome to my site"
    p "Your account was created successfully"       

-- Use the message in your handler.
getHomeR :: Handler Html
getHomeR = defaultLayout $ do
    setTitle "Yesod Web Service Homepage"    
    setMessage $ message
    $(widgetFile "home")

对于您主页的用户来说,就像您有两条消息一样。要了解更多信息,blaze-html请查看此处

于 2013-10-28T04:09:18.130 回答