问题标签 [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.
yesod - lookupPostParam 总是返回 Nothing
在 yesod-simple 脚手架的 Home.hs 处理程序中,我将这些行添加到 postHomeR:
然后在 homepage.hamlet 模板中,我将此结果与变量插值“#{result}”一起使用。
然而结果总是“(空)”。我该如何解决这个问题?
yesod - 提交后表单字段名称更改为'f1','f2'
我使用了模板 yesod-simple 创建了一个脚手架。
处理程序 Home.hs 有以下几行:
提交表单后,开发网络服务器会显示:
-----------------------------11220121616194905281129768369 内容处置:表单数据;名称="f1"; filename="testfile" 内容类型:text/x-haskell
...
-----------------------------11220121616194905281129768369 内容处置:表单数据;名称="f2"
...
为什么这些 post 参数从“fileInfo”更改为“f1”,从“fileDescription”更改为“f2”?
现在使用 lookupPostParam 时,我需要使用“f1”和“f2”作为参数而不是原始字段名称......
haskell - Yesod:将当前用户传递给表单
我一直在寻找这个,但在这里找到的答案最终出现在一个包含该值的列表中。我想知道是否没有另一种更直接的方法来做我需要的事情。
我有一个表格:
如您所见,我正在尝试将用户 ID 传递给表单,因为这些是要审核的字段:
它需要作者的ID。我尝试这样做的方法是在 postReviewsR 上执行以下操作:
它必须是 Maybe,因为理论上您可以尝试在不登录的情况下发布内容,因此 uid 可能为空。如果我尝试直接进入((result, _), _) <- runFormPost $ formReview uid它说有一个Maybe Text.
现在我的问题与其他帖子类似,就是这个错误:
链接帖子中的建议是用来keyToValues :: Key record -> [PersistValue]将显然只是文本的密钥转换为我需要的 UserId。对我来说似乎太笨拙了,我需要做所有这些,然后head在该列表上使用来获取其中的值,所有这些都是为了将 ID 放入表单中。必须有另一种更正确的方法,对吧?我在这里想念什么?我如何获得在那里进行评论的用户的 ID?
编辑:我应该指出我没有使用 Yesod.Auth 所以我不能使用它的功能。
haskell - Yesod - 带有外键的表单
我正在使用 Yesod 开发我的第一个应用程序,并且我正在创建一些 CRUD api 来启动。
我有一个看起来像的模型
userId外键在哪里。
我需要创建一个端点才能创建一个新的 Activity 并且客户端需要能够指定userId.
为此,我使用了类似的表格
这样做我会收到如下错误:
有没有解决这个问题的标准方法?
haskell - 无法将类型“BaseBackend(YesodPersistBackend PersonalPage)”与“SqlBackend”匹配
我在 postgresql 中使用持久性和 Yesod 时遇到问题。这是带来问题的功能:
痕迹是:
haskell - 在 Yesod 中选择元素默认/空选项
在 Yesod 中使用selectFieldList表单字段,行为似乎是,如果您使用mreq,则选择元素没有默认的“空”选项。如果您使用mopt,则默认选项(对应于一个Nothing值)具有文本<None>。
1)使用时如何更改<None>选项的文本mopt?
2)如何在使用时添加一个空选项mreq?的类型签名作为选项selectFieldList的[(msg, a)]参数 - 因此没有添加“虚拟”选项的范围。
ajax - Yesod中没有页面刷新的POST请求
任务是创建一个具有漂亮错误处理的注册表单。
我是 Yesod 的新手,所以我发现这样做的唯一方法是:
但是有一个问题:每次提交时页面都会刷新,而我希望它动态地执行此操作。
我知道它可以在 Ajax 或 Jquery 的帮助下修复,
但我会失去使用 Yesod POST 函数时获得的所有好处。
有没有标准的方法来处理它?
haskell - 如何在 Yesod 中为 selectField 构建预选选项?
(之前有人问过,但没有答案)。
我在数据库中有一个国家列表:
我可以显示一个表格来选择其中一个:
我知道我应该用Nothing所需的默认值替换最后一行中的,但我仍然不知道该怎么做。看着mreq和optionsPairs签名,我的想法是,在这种情况下,我应该提供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 Country但Maybe如果我模式匹配并仅传递Entity Country(ie:)Just (Entity countryId country) -> (countryName $ entityVal (Entity countryId country), entityKey (Entity countryId country)我仍然会收到第一个错误。
提前致谢。
haskell - 当“修改”具有相同值的字段时,无法将类型“HandlerSite m0”与“HandlerSite m”匹配
我正在开发一个 Yesod 应用程序,并希望有textField一个修改后的fieldView. 首先,我尝试了这个:
据我所知,这textField应该与I.textField. 但是,我收到以下错误:
有趣的是,这种另一种写法很好用:
fieldView作为函数使用有问题吗?我现在很困惑。我尝试使用ScopedTypeVariablesto 链接m到m0,但它不起作用,我不明白为什么甚至需要它。什么阻止m匹配m0?
编辑:我刚试过:
它失败了,所以我猜这个问题与提到I.textField两次有关。这很奇怪。它不像I.textField是一个类型类成员,它有多个定义可供选择,即使是这样,我也看不出是什么阻止了 ghc 推断它m并且m0是相同的......好吧HandlerSite是一个类型族,所以我从类型检查器的角度猜测,它可能导致不同的实例RenderMessage和不同的代码定义,这些代码以某种方式链接到I.textField. 我想我开始看到光明了。
编辑2:我想我可以像这样链接它们:
开启ScopedTypeVariables,但显然不是。
编辑3:按照逻辑,这有效:
所以我想这与顶级绑定与本地绑定有关吗?
haskell - 如何创建实体键表单字段
我想创建一个新的表单字段来输入实体键,在这种情况下是 ArticleId 而不是 Integer 字段,我可以这样做吗?
有我的文章模型
还有我的 AForm 文章处理程序
我想这样做以避免在我的 selectList 中使用 toSqlKey
谢谢!