如何使用widgetFile在另一个中包含一个hamlet文件?

mru*_*ueg 4 haskell yesod

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

以下内容blog.hamlet没有工作:

$forall post <- posts
    ^{widgetFile "blogpost")
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*man 15

Hamlet语法不支持在其中嵌入Template Haskell接头,这使得您希望的代码无法实现.相反,您需要在Haskell中创建一个辅助函数,例如:

blogpost post = $(widgetFile "blogpost")
Run Code Online (Sandbox Code Playgroud)

然后在blog.hamlet中,您可以:

$forall post <- posts
    ^{blogpost post}
Run Code Online (Sandbox Code Playgroud)