我刚刚开始编写自定义快照并遇到了障碍。我有以下基本 snaplet,它有一个位于“snaplets/admin-pg/snaplets/heist/templates”中的“角色”模板。有人能告诉我为什么 handleUsers 函数不呈现“角色”模板吗?我收到“没有处理程序接受'/pgadmin/users'”错误。我确定我错过了一些非常基本的东西。谢谢。
我的主要应用程序定义如下。它是 HasHeist 的一个实例
data App = App
{ _heist :: Snaplet (Heist App)
, _pgadmin :: Snaplet (Admin App)
}
我在主应用程序(“Site.hs”)中的 snaplet 的初始化代码是:
h <- nestSnaplet "" heist $ heistInit "templates"
z <- nestSnaplet "pgadmin" pgadmin $ adminPGInit h
自定义 snaplet 代码...
data Admin b = Admin { name :: String}
adminPGInit :: HasHeist a => Snaplet (Heist a) -> SnapletInit a (Admin a)
adminPGInit h = makeSnaplet "admin-pg" description datadir $ do
config <- getSnapletUserConfig
fp <- getSnapletFilePath
addTemplatesAt h "" fp
addRoutes [ ("/users", handleUsers)
, ("/foo", handleFoo)]
return $ Admin "Admin Snaplet"
where
description = "PostgreSQL Admin"
datadir = Just $ liftM (++"/resources") getDataDir
handleUsers :: HasHeist b => Handler b (Admin b) ()
handleUsers = do
render "roles"
handleFoo :: HasHeist b => Handler b (Admin b) ()
handleFoo = writeBS "foo from admin"