是否有可能以这样的方式使用Snap/Heist,使每个模板都有一个自动生成的路由?例如,假设我有一个带有<apply-content/>标记的名为"outline“的模板,以及一个调用<apply template="outline">的名为"index”的模板。我希望“索引”模板在路由"/“下可见,而”大纲“模板没有路由。我试过以下几种方法:
heistInit并将index.tpl和outline.tpl放在templates目录中。这会自动创建“大纲”的路径。outline.tpl放在单独的目录中,并调用addTemplatesAt。这也会自动为outline创建一个路由。heistInit'而不是heistInit,如下所示:
H <- nestSnaplet“盗用$ heistInit‘”模板(Heist.emptyHeistConfig { Heist.Internal.Types._hcNamespace = "“})做最后一种方式意味着我必须手工添加路线,这是可以的。但是,即使我可以使用render或heistServeSingle为模板提供服务,但当使用<apply>时,模板无法相互看到。
我知道这感觉只是一个“小”的问题,我可以让助手-模板是可见的,但对我来说,这是草率。我很想知道http://snapframework.com是否做了些什么来解决这个问题,但是看起来他们的助手模板是可见的,例如:http://snapframework.com/nav。
发布于 2016-11-10 07:17:01
就像Libby说的那样,打算的解决方案是在模板名称前加上下划线,以使它们无法使用。我不知道她看到了什么,实际上是为那些模板服务的。这一行代码检查:
https://github.com/snapframework/snap/blob/master/src/Snap/Snaplet/HeistNoClass.hs#L320
如果这不起作用,那么请用一种让我重现问题的方法来提交一个bug。
可以使用的第二种方法是调用heistInit' os,不隐式地为您添加heistServe。这对您是否可以使用<apply>查看模板没有影响,因为它不会通过路径检索模板。我怀疑如果您在那里遇到问题,可能是因为您使用了emptyHeistConfig,然后没有设置scTemplateLocations字段(scTemplateLocations)。
https://stackoverflow.com/questions/39278102
复制相似问题