2012-05-28 64 views
4

對於可重用性,我想在另一個內部重新使用一個小部件。例如,小部件文件blogpost.hamlet可能包含顯示帖子的方式,而blog.hamlet可能包含完整的博客。如何使用widgetFile將hamlet文件包含在另一個文件中?

blog.hamlet以下內容不工作:

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

那麼,什麼是正確的語法內嵌入另一個窗口小部件?

回答

15

Hamlet語法不支持將模板Haskell拼接嵌入到其中,這會使您希望的代碼不可行。相反,你需要創建在Haskell一個輔助功能,例如:

blogpost post = $(widgetFile "blogpost") 

然後在blog.hamlet,你可以有:

$forall post <- posts 
    ^{blogpost post} 
+0

謝謝你,偉大的工作。 – mrueg

+0

這是不是在defaultLayout內工作?我有一個腳手架網站,我試圖做一些非常相似的事情,我得到: 'Foundation.hs:73:27: 不在範圍內:'loginArea' 拼接: $(hamletFile「templates/default-layout-wrapper.hamlet「)' –

+0

沒有看到代碼的其餘部分,我無法確定,但看起來像一個單獨的錯誤。也就是說,您嘗試使用的標識符不在範圍內。 –

相關問題