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