【发布时间】:2013-03-06 14:10:15
【问题描述】:
如何在 setMessage 中使用类型安全的 url?
我想改变
...
setMessage [shamlet|<span .warning>Warning! See Help.|]
...
到包含链接的消息。
从我目前收集到的信息来看,它应该是这样工作的
...
renderer <- getUrlRender
let html = [hamlet|<span .warning>Warning! See #
<a href=@{HelpR}> Help!|]
setMessage $ toHtml $ html renderer
...
但该代码只会让我在整个文件中显示令人困惑的错误消息。
我确实阅读了有关莎士比亚模板的印刷版 Yesod Book Chapter,但我发现它对所涉及的类型不是很明确。例如[hamlet|...|]| 产生什么类型?如果没有 URL-Interpolation,ghci 会报告 t -> Markup,但如果在内部使用 URL-Interpolation,我只会收到错误消息。
我对所涉及的所有类型同义词感到更加困惑,例如[shamlet|...|] 提供Html 类型的东西,而setMessage 期望Html ()。我不知道如何轻松查找这些内容:Hoogle 经常找不到关于该主题的任何内容,而 Google 总是找到可能过时的版本(以及不再有效的示例) - 确定我最终会获得最新版本,但有没有地方可以我对这些有一个简单的概述? (ghci 可以列出一个类型的所有同义词吗?)
请注意,我实际上想在纯功能代码片段中生成消息,稍后由处理程序使用。这就是为什么我想将 URL 渲染与指定小村庄的位置分开。感谢任何指向正确方向的指针!
【问题讨论】: