使用 Snap Web 框架为 Heist 模板添加 OnLoad 挂钩
我希望使用 Heist 模板的钩子“http://snapframework.com/”rel="nofollow">快照。到目前为止,我的天真的方法是在我的应用程序初始化程序中使用以下代码:
app :: SnapletInit App App
app = makeSnaplet "app" "The main web application" Nothing $ do
-- ...
h <- nestSnaplet "heist" heist $ heistInit "resources/templates"
-- ...
modifyHeistTS . addOnLoadHook $ myTemplateHook
该代码当然不起作用,因为在从“资源/模板”加载模板之后添加了钩子
如何在加载初始模板之前是否要修改 Heist 模板状态,以便添加 OnLoad 挂钩?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
很好的问题。看起来这是我在设计库时的疏忽。我会考虑如何最好地支持这一点并回复您。
如果您想要立即解决方法,请插入一些内容以将挂钩添加到传递到 loadTemplates 的模板状态 此处。或者,您可以直接在 Heist 中修改emptyTemplateState。
更新:我添加一个应该解决这个问题的heistInit'函数。它将出现在下一个 hackage 版本中。在此之前,您可以从 github 获取它。
Excellent question. It looks like this is an oversight on my part when designing the library. I'll think about how best to support this and get back to you.
If you want an immediate workaround, insert something to add your hook to the template state that gets passed into loadTemplates here. Or alternatively, you could modify emptyTemplateState directly in Heist.
Update: I added a heistInit' function that should take care of this issue. It'll be in the next hackage release. Until then, you can get it from github.