【问题标题】:use AForm in a subsite Yesod在子站点 Yesod 中使用 AForm
【发布时间】: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


【解决方案1】:

当您在子站点中时,请使用 (HandlerT master IO)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 2015-06-30
    • 2018-01-23
    • 2015-01-15
    • 2015-01-27
    • 2016-11-02
    • 2015-01-04
    相关资源
    最近更新 更多