问题标签 [yesod-forms]

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 投票
0 回答
113 浏览

yesod - lookupPostParam 总是返回 Nothing

在 yesod-simple 脚手架的 Home.hs 处理程序中,我将这些行添加到 postHomeR:

然后在 homepage.hamlet 模板中,我将此结果与变量插值“#{result}”一起使用。

然而结果总是“(空)”。我该如何解决这个问题?

0 投票
0 回答
50 浏览

yesod - 提交后表单字段名称更改为'f1','f2'

我使用了模板 yesod-simple 创建了一个脚手架。

处理程序 Home.hs 有以下几行:

提交表单后,开发网络服务器会显示:

-----------------------------11220121616194905281129768369 内容处置:表单数据;名称="f1"; filename="testfile" 内容类型:text/x-haskell

...

-----------------------------11220121616194905281129768369 内容处置:表单数据;名称="f2"

...

为什么这些 post 参数从“fileInfo”更改为“f1”,从“fileDescription”更改为“f2”?

现在使用 lookupPostParam 时,我需要使用“f1”和“f2”作为参数而不是原始字段名称......

0 投票
1 回答
150 浏览

haskell - Yesod:将当前用户传递给表单

我一直在寻找这个,但在这里找到的答案最终出现在一个包含该值的列表中。我想知道是否没有另一种更直接的方法来做我需要的事情。

我有一个表格:

如您所见,我正在尝试将用户 ID 传递给表单,因为这些是要审核的字段:

它需要作者的ID。我尝试这样做的方法是在 postReviewsR 上执行以下操作:

它必须是 Maybe,因为理论上您可以尝试在不登录的情况下发布内容,因此 uid 可能为空。如果我尝试直接进入((result, _), _) <- runFormPost $ formReview uid它说有一个Maybe Text.

现在我的问题与其他帖子类似,就是这个错误:

链接帖子中的建议是用来keyToValues :: Key record -> [PersistValue]将显然只是文本的密钥转换为我需要的 UserId。对我来说似乎太笨拙了,我需要做所有这些,然后head在该列表上使用来获取其中的值,所有这些都是为了将​​ ID 放入表单中。必须有另一种更正确的方法,对吧?我在这里想念什么?我如何获得在那里进行评论的用户的 ID?

编辑:我应该指出我没有使用 Yesod.Auth 所以我不能使用它的功能。

0 投票
2 回答
149 浏览

haskell - Yesod - 带有外键的表单

我正在使用 Yesod 开发我的第一个应用程序,并且我正在创建一些 CRUD api 来启动。

我有一个看起来像的模型

userId外键在哪里。

我需要创建一个端点才能创建一个新的 Activity 并且客户端需要能够指定userId.

为此,我使用了类似的表格

这样做我会收到如下错误:

有没有解决这个问题的标准方法?

0 投票
1 回答
256 浏览

haskell - 无法将类型“BaseBackend(YesodPersistBackend PersonalPage)”与“SqlBackend”匹配

我在 postgresql 中使用持久性和 Yesod 时遇到问题。这是带来问题的功能:

痕迹是:

0 投票
0 回答
110 浏览

haskell - 在 Yesod 中选择元素默认/空选项

在 Yesod 中使用selectFieldList表单字段,行为似乎是,如果您使用mreq,则选择元素没有默认的“空”选项。如果您使用mopt,则默认选项(对应于一个Nothing值)具有文本<None>

1)使用时如何更改<None>选项的文本mopt

2)如何在使用时添加一个空选项mreq?的类型签名作为选项selectFieldList[(msg, a)]参数 - 因此没有添加“虚拟”选项的范围。

0 投票
1 回答
110 浏览

ajax - Yesod中没有页面刷新的POST请求

任务是创建一个具有漂亮错误处理的注册表单。
我是 Yesod 的新手,所以我发现这样做的唯一方法是:

但是有一个问题:每次提交时页面都会刷新,而我希望它动态地执行此操作。
我知道它可以在 Ajax 或 Jquery 的帮助下修复,
但我会失去使用 Yesod POST 函数时获得的所有好处。
有没有标准的方法来处理它?

0 投票
1 回答
125 浏览

haskell - 如何在 Yesod 中为 selectField 构建预选选项?

之前有人问过,但没有答案)。

我在数据库中有一个国家列表:

我可以显示一个表格来选择其中一个:

我知道我应该用Nothing所需的默认值替换最后一行中的,但我仍然不知道该怎么做。看着mreqoptionsPairs签名,我的想法是,在这种情况下,我应该提供Maybe Option默认国家/地区,但我的尝试引发了如此多的类型错误,可能我离正确答案还很远。

Yesod 书有一个示例,使用似乎比我试图实现的更简单,所以我不知道如何推断它。

顺便说一句,我从数据库中获取了默认国家,所以我不需要硬编码它的内部 id:

当我将它作为参数传递给mreq我时,会出现以下错误:

无法将类型 '(,) Text' 与 'HandlerFor site' 匹配 预期类型:HandlerFor 站点(关键记录) 实际类型:(文本,关键记录)

这是defaultContry函数 ( (countryName $ entityVal row, entityKey row)) 的最后一行。我知道我应该Key record从这对中取出并返回,HandlerFor site但同时我也得到:

无法将预期类型 'Maybe (Key Country)' 与实际类型 'HandlerFor site0 (Key record0)' 匹配</p>

(countryR, countryV) <- mreq (selectField countries) "" defaultCountry在行。我将此解释为“您传递给我一个HandlerFor site0 (Key record0)但我只接受Maybe (Key Country)似乎与第一个错误相冲突的...

在这一(countryName $ entityVal row, entityKey row)行中,我还看到:

无法将预期类型“实体国家”与实际类型“可能(实体国家)”匹配</p>

row论据中。我知道我应该从中提取,Entity CountryMaybe如果我模式匹配并仅传递Entity Country(ie:)Just (Entity countryId country) -> (countryName $ entityVal (Entity countryId country), entityKey (Entity countryId country)我仍然会收到第一个错误。

提前致谢。

0 投票
1 回答
79 浏览

haskell - 当“修改”具有相同值的字段时,无法将类型“HandlerSite m0”与“HandlerSite m”匹配

我正在开发一个 Yesod 应用程序,并希望有textField一个修改后的fieldView. 首先,我尝试了这个:

据我所知,这textField应该与I.textField. 但是,我收到以下错误:

有趣的是,这种另一种写法很好用:

fieldView作为函数使用有问题吗?我现在很困惑。我尝试使用ScopedTypeVariablesto 链接mm0,但它不起作用,我不明白为什么甚至需要它。什么阻止m匹配m0

编辑:我刚试过:

它失败了,所以我猜这个问题与提到I.textField两次有关。这很奇怪。它不像I.textField是一个类型类成员,它有多个定义可供选择,即使是这样,我也看不出是什么阻止了 ghc 推断它m并且m0是相同的......好吧HandlerSite是一个类型族,所以我从类型检查器的角度猜测,它可能导致不同的实例RenderMessage和不同的代码定义,这些代码以某种方式链接到I.textField. 我想我开始看到光明了。

编辑2:我想我可以像这样链接它们:

开启ScopedTypeVariables,但显然不是。

编辑3:按照逻辑,这有效:

所以我想这与顶级绑定与本地绑定有关吗?

0 投票
0 回答
46 浏览

haskell - 如何创建实体键表单字段

我想创建一个新的表单字段来输入实体键,在这种情况下是 ArticleId 而不是 Integer 字段,我可以这样做吗?

有我的文章模型

还有我的 AForm 文章处理程序

我想这样做以避免在我的 selectList 中使用 toSqlKey

谢谢!