[英]How to use Snap/Heist without creating routes automatically for every template
是否可以以并非每个模板都有自动生成的路线的方式使用“捕捉/抢劫”? 例如,假设我有一个带有<apply-content/>
标签的名为“ outline”的模板,以及一个名为<apply template="outline">
名为“ index”的<apply template="outline">
。 我希望“索引”模板在路由“ /”下可见,而“大纲”模板没有路由。 我尝试了以下方法:
调用heistInit
并将index.tpl
和outline.tpl
放在templates
目录中。 这将自动为“轮廓”创建路线。
将outline.tpl
放在单独的目录中,然后调用addTemplatesAt
。 这也会自动为outline
线创建路线。
使用空的Config调用heistInit'
而不是heistInit
,如下所示:
h <- nestSnaplet "" heist $ heistInit' "templates (Heist.emptyHeistConfig { Heist.Internal.Types._hcNamespace = "" })
最后一种方式意味着我必须手动添加路线,没关系。 但是,即使我可以使用render
或heistServeSingle
提供模板,但使用<apply>
时,模板也无法看到彼此。
我知道这只是一个“次要”问题,我可以让帮助程序模板可见,但是对我来说这很草率。 我很想知道http://snapframework.com是否做了一些事情来解决这个问题,但是看来他们没有看到他们的帮助模板,例如: http : //snapframework.com/nav
就像Libby所说的那样,预期的解决方案是在模板名称前加上下划线,以使其不被使用。 我不确定她在实际为这些模板提供服务时看到了什么。 这行代码进行检查:
https://github.com/snapframework/snap/blob/master/src/Snap/Snaplet/HeistNoClass.hs#L320
如果这不起作用,请提交一个错误,让我重现该问题。
可以使用的第二种方法是调用heistInit'
heistServe
不会为您隐式添加。 这不会影响您是否可以使用<apply>
查看模板,因为它不会通过检索模板的途径。 我怀疑您是否遇到麻烦,可能是因为您使用emptyHeistConfig,然后未设置scTemplateLocations字段( http://hackage.haskell.org/package/heist-1.0.1.0/docs/Heist-Internal-Types .html#v:_scTemplateLocations )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.