【发布时间】:2015-08-02 01:54:57
【问题描述】:
我想为我的项目中的所有 CRUD 操作创建一个子站点,我有以下代码
{-# LANGUAGE FlexibleInstances #-}
module Demo (
module Demo.Data,
module Demo
)where
import Data.Maybe (Maybe)
import Demo.Data
import Yesod
import Prelude (IO,($))
import Model
import Crud.FormsC
getDemoNewR :: Yesod master => HandlerT YesodDemo (HandlerT master IO) Html
getDemoNewR = do
(widget, encoding) <- generateFormPost $ renderBootstrap3 BootstrapBasicForm $ demoForm Nothing
defaultLayout $ do
$(widgetFile "Exam/createExam")
但是有这个错误Not in scope: type constructor or class ‘Handler’
我无法导入 Foundation,因为我的 Foundation.hs 中有一个导入 Demo 会生成循环引用
import Demo
import Demo.Data
data App = App
{ appSettings :: AppSettings
, appStatic :: Static -- ^ Settings for static file serving.
, appConnPool :: ConnectionPool -- ^ Database connection pool.
, appHttpManager :: Manager
, appLogger :: Logger
, getDemo :: YesodDemo
}
那么,我如何创建一个子站点?
【问题讨论】:
-
一般建议:谷歌“hs-boot”文件,或重组你的模块层次结构。如果您需要更具体的建议,请给我们一个导致该错误的最小但完整的代码示例。
-
假设您正在搭建脚手架站点,
Handler类型别名是在 Foundation.hs 中从mkYesodData生成的。 -
您好,感谢他们的回答,我将代码详细信息和开头添加到我的foundation.hs,也许有人有一个与书中聊天不同的子站点示例
标签: haskell yesod yesod-forms