问题标签 [haskell-snap-framework]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
685 浏览

haskell - Digestive Functors with a variable number of subforms (Snap/Heist)

I'm working on porting a site from PHP to Snap w/ Heist. I've ported some of the simpler forms to using Digestive Functors successfully, but now I have to do the tricky ones that require the use of subforms.

This application manages producing flyers for retail stores, so one of the tasks that need to be done is adding an ad size and defining its physical dimensions on the printed flyer. Sizes will vary depending on the type of page (configurable by the flyer owner) and its orientation (which can only be controlled by the administrators).

what the form looks like in the PHP version

This form is guaranteed to have a minimum of 3 cells, most likely going to have 9 cells (as pictured above from the PHP version), but could theoretically have an unlimited number.

Here's what I've got so far for the dimensions subform:

The form definition doesn't feel quite right (maybe I have completely the wrong idea here?). AdDimensions.dimensions should be a Maybe String, since it will be null when coming back from the database when running the query to get a list of all of the possible combinations of size_id/layout_id for a new ad size, but it will be not null from a similar query that will be run when creating the edit form. The field itself is required (ad_dimensions.dimensions is set to not null in the database).

From here, I have no idea where to go to tell the parent form that it has a list of subforms or how I might render them using Heist.

0 投票
1 回答
329 浏览

haskell - 从数据库中检索消化函子的选择列表(Snap/Heist)

我有一个处理添加和编辑的地址表单(如果添加什么都没有,如果编辑只是地址)。到目前为止,我已经用少数项目硬编码了州和国家/地区的选择。

现在我想从数据库中检索州和国家的列表。我可以将州/国家/地区列表传递给表单,就像我已经在处理地址列表一样,但此表单也是 3 或 4 个其他表单(新广告客户表单、新客户表单等)的子表单而且我不需要表格之外的州/国家/地区列表,就像我使用地址列表一样。

这是我刚刚添加的用于获取国家/地区信息的新表单:

这是调用它的处理程序:

我得到的错误是这样的:

0 投票
1 回答
220 浏览

mongodb - 如何从处理程序访问全局 MongoDB 连接?

我正在尝试使用 Snap 制作一个简单的 Web 应用程序。我想要一个可以跨处理程序使用的全局 MongoDB 连接。

我在 中打开此连接appInit,该连接有效。

但是,我不知道如何_mongoDB从处理程序访问此连接 ()。我尝试了几件事,包括以下内容,但每次都会出现类型错误。

它给了我以下错误:

它把我搞糊涂了。如何从处理程序访问我的 MongoDB 连接?

0 投票
1 回答
493 浏览

haskell - Snap 框架:如何在处理程序中运行 IO

这可能是一个简单的问题,我在 SO 上看到过类似的问题,但我仍然卡住了。

我正在尝试进行 HTTP 调用以提取另一个博客的内容并将其显示在我的页面上。这更像是一种学习练习。

这是我的处理程序

Requester.getUrl 具有签名 getUrl :: String -> IO T.Text

我回来的错误是

src/Main.hs:50:15:
无法匹配预期类型Handler App1 App1 t0' with actual typeIO T.Text'
在“getUrl”调用的返回类型中
在“do”块的结构中:
内容 <- getUrl "http:/ /someblog.com/"
在表达式中:
do { contents <- getUrl "http://someblog.com/";
heistLocal (bindString "contents" 内容) 。渲染$“博客”}

据我所知,我被困在 IO monad 中,它需要类型 Handler App1 App1 t0。我已经尝试在某些地方粘贴 liftIO ,但我对此感到很困惑。

谁能指出我正确的方向?

谢谢!

0 投票
1 回答
164 浏览

mongodb - Haskell Snap:mongodb字段类型错误

我收到一个我无法解决的错误。snap 应用程序编译没有问题,一切似乎都很好。但是当我在浏览器中呈现相关页面时,我收到了这个错误:

Web 处理程序引发了异常。详细信息:[_id:50b56f19208c2e9a09dccc2b,id:1.0,代码:“hdg435”,名称:“froggy”]中的预期(“代码”::整数)

代码值只是我为测试选择的一个随机字符串。我不确定为什么需要一个整数?

这些是示例快照应用程序的相关部分。

table.tpl 的相关 Heist 模板部分在这里:

请让我知道代码的其他部分需要发布。

0 投票
2 回答
147 浏览

haskell - Snaplets 是否适合大型应用程序,或者您可以直接在 snap-core 之上构建?

我打算用 Snap 编写 webapps。

但对我来说,坚持使用 snap-core 比使用 snaplets 和 lens 要简单得多。

从长远来看,是否可以在不借助 Lens 的情况下手动开始开发snap init barebones然后添加抢劫模板、HDBC 数据库持久性等?Snap 核心团队在实践中鼓励使用 Snaplets 和 snap-core 的力度有多大?

0 投票
1 回答
282 浏览

haskell - 捕捉静态 javascript 文件位置

当您在抢劫模板中链接静态内容时,其搜索规则是什么?我遇到了一些与找不到 javascript 文件有关的问题。

因此,当提供的 URL 是 /index 时,将我的“myjavascript.js”和“jquery.js”粘贴到“static”目录的根目录中似乎是有效的。如果 URL 是 /something/index,那么它无法在“静态”目录的根目录中找到我的 javascript 文件。所以把它们放在“静态/东西”中可以修复它。无论如何,我最终将我的 javascript 文件的副本散布在各处,以便可以在不同的 URL 字符串下找到它们。所以,要么我使用了错误的位置,要么我的链接在模板中不正确。

给定链接<script type="text/javascript" src="/js/jquery.js"> </script>它会在哪里查找文件?怎么样 src="jquery.js"

如果我将文件放在“static/js”下,我也会从 javascript 控制台收到这些类型的错误:

谢谢。

0 投票
1 回答
90 浏览

haskell - 你如何让像 HasHdbc 这样的 Snaplet 在 Snap 上下文之外工作?

使用 HDBC Snaplet 的教程中,它说“设计 HDBC snaplet 时的目标之一是将函数与 Handler monad 或任何与 Snap 相关的 monad 分离,以便相同的查询也可以在外部运行Snap 上下文,例如在命令行工具中。”

我正在努力做到这一点。

类型类 HasHdbc 有定义

可以这样定义这种类型的 Snap 应用程序的实例:

有人可以勾勒出如何使用 HasHdbc 类型类在 Snap 上下文之外制作这个命令行工具吗?我在基本层面上了解类型类,但类型签名getHdbcState :: m (HdbcSnaplet c s)对我来说是一个挑战,例如为 IO Monad 定义一个实例。

0 投票
1 回答
131 浏览

haskell - MonadCatchIO 的问题将如何影响未来使用 Snap 框架构建的应用程序?

我最近在这里看到了有关 MonadCatchIO 类的警告。

Snap Monad 就是一个例子。

我想知道 MonadCatchIO 问题的任何可能解决方案将如何影响基于当前版本 Snap 构建的 webapps。这是否意味着 Snap webapps 的框架升级将需要大量更改?

0 投票
1 回答
335 浏览

haskell - Snap:带有抢劫的内/外循环

我不确定我是否正确地表述了标题中的问题,但情况就是这样。当表字段(模式)仅在运行时可用时,我需要创建一个带有抢劫的动态表。所以通常,当架构在编译时已知时,我会做这样的事情:

那是我在编译时知道字段数量及其名称的时候。我了解如何使用“runChildrenWith”、“mapSplices”等处理处理程序中的所有内容......

现在我处于字段和模式的数量仅在运行时可用的情况。因此,据我了解,抢劫模板如下所示:

我真的很困惑如何在处理程序中实现它。我想我需要做两次“mapSplices”——一个在另一个里面,对吗?所以,从经验上讲,这将是一个内部和外部循环/映射,对吗?

我将如何在处理程序中执行此操作?

谢谢。

更新:

忘了提一下,可以在运行时从数据库中检索模式,并且可以作为:

但它并不是真正需要的,因为数据来自无模式的 mongodb 并转换为 Map:

更新2:

我尝试了建议的示例,但没有成功,我只是将所有数据放在一个列中。我只需要一个简单的内部和外部循环来动态生成字段和行。再简单不过了:

更新3:

经过一个漫长的周末休息后,我终于破解了它......这是一个例子。它是特定于 mongodb 的,我实际上只是复制并粘贴了它。但是,我想,如果有人陷入内/外循环,那会很有帮助。