Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I include an hamletfile inside another using widgetFile?

Tags:

haskell

yesod

For reusability, I want to re-use a widget inside another. For instance, the widget file blogpost.hamlet could contain how a post is displayed, and blog.hamlet could contain the full blog.

The following content of blog.hamlet does not work:

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

So, what is the correct syntax to embed one widget inside another?

like image 282
mrueg Avatar asked Dec 07 '22 14:12

mrueg


1 Answers

The Hamlet syntax does not support embedding Template Haskell splices inside of it, which makes the code you're looking to do impossible. Instead, you need to create a helper function in Haskell, e.g.:

blogpost post = $(widgetFile "blogpost")

Then in blog.hamlet, you can have:

$forall post <- posts
    ^{blogpost post}
like image 194
Michael Snoyman Avatar answered Dec 09 '22 15:12

Michael Snoyman