是否可以使用Snap / Heist,使得并非每个模板都有自动生成的路径?例如,假设我有一个名为&#34; outline&#34;的模板。使用<apply-content/>
标记和名为&#34; index&#34;的模板它调用<apply template="outline">
。我想要&#34;索引&#34;模板在路线&#34; /&#34;和&#34;大纲&#34;下可见模板没有路线。我尝试过以下方法:
致电heistInit
并将index.tpl
和outline.tpl
放入templates
目录。这会自动为&#34; outline&#34;。
将outline.tpl
放在单独的目录中并调用addTemplatesAt
。这也会自动为outline
。
使用空配置调用heistInit'
而不是heistInit
,如下所示:
h <- nestSnaplet "" heist $ heistInit' "templates (Heist.emptyHeistConfig { Heist.Internal.Types._hcNamespace = "" })
做最后一种方式意味着我必须手动添加路线,这没关系。但即使我可以使用render
或heistServeSingle
投放模板,使用<apply>
时模板也无法看到对方。
我知道这只是一个&#34;未成年人&#34;问题,我可以让帮助模板可见,但对我来说感觉马虎。我很想知道http://snapframework.com是否做了一些事情来解决这个问题,但看起来他们看到了帮助模板,例如:http://snapframework.com/nav
答案 0 :(得分:0)
与Libby一样,预期的解决方案是使用下划线为模板名称添加前缀,以使其不被提供。我不确定她实际上在为这些模板提供服务时看到了什么。这行代码进行检查:
https://github.com/snapframework/snap/blob/master/src/Snap/Snaplet/HeistNoClass.hs#L320
如果这不起作用,请提交一个错误方法让我重现问题。
可以使用的第二种方法是调用heistInit'
os heistServe
不会隐式添加。这对于您是否可以使用<apply>
查看模板没有影响,因为它不会通过路径来检索模板。我怀疑你是否遇到麻烦可能是因为你使用了emptyHeistConfig然后没有设置scTemplateLocations字段(http://hackage.haskell.org/package/heist-1.0.1.0/docs/Heist-Internal-Types.html#v:_scTemplateLocations)。