【问题标题】:How can I include an hamletfile inside another using widgetFile?如何使用 widgetFile 在另一个文件中包含一个 hamletfile?
【发布时间】:2013-08-02 22:54:28
【问题描述】:

为了可重用性,我想在另一个小部件中重用。例如,小部件文件 blogpost.hamlet 可以包含帖子的显示方式,blog.hamlet 可以包含完整的博客。

blog.hamlet 的以下内容不起作用

$forall post <- posts
    ^{widgetFile "blogpost")

那么,将一个小部件嵌入另一个小部件的正确语法是什么?

【问题讨论】:

    标签: haskell yesod


    【解决方案1】:

    Hamlet 语法不支持在其中嵌入 Template Haskell 拼接,这使得您正在寻找的代码不可能实现。相反,您需要在 Haskell 中创建一个辅助函数,例如:

    blogpost post = $(widgetFile "blogpost")
    

    那么在 blog.hamlet 中,你可以有:

    $forall post <- posts
        ^{blogpost post}
    

    【讨论】:

    • 这在 defaultLayout 中不起作用吗?我有一个脚手架站点,我正在尝试做一些非常相似的事情,我得到:Foundation.hs:73:27: Not in scope: ‘loginArea’ In the splice: $(hamletFile "templates/default-layout-wrapper.hamlet")
    • 没有看到其余的代码,我无法确定,但这看起来像是一个单独的错误。也就是说,您尝试使用的标识符不在范围内。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 2010-11-26
    • 1970-01-01
    相关资源
    最近更新 更多