3

我希望在使用Snap的 Web 应用程序中添加一些用于预处理Heist模板的钩子。到目前为止,我天真的方法是在我的应用程序初始化程序中使用以下代码:

app :: SnapletInit App App
app = makeSnaplet "app" "The main web application" Nothing $ do
    -- ...
    h <- nestSnaplet "heist" heist $ heistInit "resources/templates"
    -- ...
    modifyHeistTS . addOnLoadHook $ myTemplateHook

这段代码当然不起作用,因为在从“资源/模板”加载模板之后添加了钩子

为了添加 OnLoad 钩子,如何在加载初始模板之前修改 Heist 模板状态?

4

1 回答 1

2

很好的问题。看起来这是我在设计图书馆时的疏忽。我会考虑如何最好地支持这一点并回复你。

如果您想立即解决问题,请插入一些内容以将您的钩子添加到模板状态,该模板状态将在此处传递给 loadTemplates 。或者,您可以直接在 Heist 中修改 emptyTemplateState。

更新:我添加了一个 heistInit' 函数来解决这个问题。它将在下一个 hackage 版本中。在此之前,您可以从github获取它。

于 2011-11-28T16:19:25.057 回答