标签: ihp

如何在 IHP 表单中传递 List 参数?

我正在尝试在 IHP 中制作表单的多项选择部分。目前正在尝试在视图中使用多个类似这样的复选框来解决它。

renderIngredientSelection :: Ingredient -> Html
renderIngredientSelection ingredient = [hsx|
    <li>
        <input name="ingredients" type="checkbox" value={(get #name ingredient)} />{get #name ingredient}
    </li>
    |]
Run Code Online (Sandbox Code Playgroud)

所以网络日志的浏览器工具说它正在正确发送这样的请求。

barcode=5555555555555&name=Pancake&ingredients=milk&ingredients=egg
Run Code Online (Sandbox Code Playgroud)

但是在控制器中,该param函数只会捕获第一个ingredients参数。

有没有办法在控制器中捕获所有这些参数?我在网络日志中看到,创建了一个包含所有参数的元组列表,包括两个ingredients参数。我如何访问它并将其映射到一个列表中["milk", "egg"]

haskell ihp

7
推荐指数
1
解决办法
133
查看次数

如何在 IHP 中自定义 404?

我在 IHP 中找不到处理一般 404 页面的明显方法。

有没有一种简单的方法可以覆盖 FrontController 或 Router 中无效页面上的默认“未找到”路由?

haskell ihp

5
推荐指数
1
解决办法
99
查看次数

一对零或一的关系

介绍

\n

为了测试 IHP,我已将Contoso University ASP.NET Core 教程的部分内容转换为 IHP。

\n

本教程中的这一步显示了数据模型图。根据该页面,我在这个问题中重点关注的部分涉及Instructor和 ,OfficeAssignment其中 和 具有一对零或一的关系。

\n

在此输入图像描述

\n

讲师

\n

C# 中的模型Instructor是:

\n
public class Instructor\n{\n    public int ID { get; set; }\n\n    [Required]\n    [Display(Name = "Last Name")]\n    [StringLength(50)]\n    public string LastName { get; set; }\n\n    [Required]\n    [Column("FirstName")]\n    [Display(Name = "First Name")]\n    [StringLength(50)]\n    public string FirstMidName { get; set; }\n\n    [DataType(DataType.Date)]\n    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]\n    [Display(Name = "Hire Date")]\n    public DateTime …
Run Code Online (Sandbox Code Playgroud)

ihp

5
推荐指数
0
解决办法
149
查看次数

是否有替代 createTemporaryDownloadUrl 的方法,不需要在服务器上存储文件?

我正在尝试将特定字符串导出为 csv 文件,并且希望用户能够下载该文件。IHP 具有 createTemporaryDownloadUrl 函数,该函数接收 StoredFile,然后创建临时下载链接。问题是,我不想将此 CSV 文件存储在服务器上,因为它需要额外的开销,例如在临时下载链接过期后删除该文件。

我可以使用 renderPlain 渲染文本变量,但我不完全确定如何自动化下载过程(因为用户必须右键单击,下载为,然后自己重​​命名文件)

我首先尝试通过存储文件来使用常规的 createTemporaryDownloadUrl 方法,但在临时下载 url 过期后没有简单的方法删除文件。我能够将 CSV 内容显示为纯文本文件,但没有明显的方法让用户下载它。

haskell http ihp

4
推荐指数
1
解决办法
41
查看次数

Haskell Aeson 返回空对象

如果不是Nothing,我试图返回一个JSON数据表示,如果Nothing则返回一个空的JSON对象;

我知道我可以做到:

encode ()
-- "[]"
Run Code Online (Sandbox Code Playgroud)

但是现在我想要一个空对象 ( "{}")。

我有这个,它可以根据给定的字段生成 JSON:

? data Person = Person { id :: Integer, height :: Float } deriving (Show)
? instance ToJSON Person where toJSON (Person { id = id, height = height }) = object [ "id" .= id, "height" .= height ]
? encode (Person 1 72.8)
-- "{\"height\":72.8,\"id\":1}"
Run Code Online (Sandbox Code Playgroud)

但最终没有 Person 将用 Nothing 表示,如果我这样做,encode (Nothing)我会收到一个错误:

<interactive>:11:1: error:
    • Ambiguous type variable ‘a0’ arising from a use of ‘encode’ …
Run Code Online (Sandbox Code Playgroud)

haskell ihp

3
推荐指数
1
解决办法
120
查看次数

如何验证创建多条记录的表单

语境

我有一个带有由控制器动态生成的任意数量输入的表单的视图。提交表单时,每个输入都应创建自己的记录,因此,如果有 60 个输入,则应创建 60 条记录。

问题

应如何验证每个输入/字段?在 IHP 文档的示例中,单个表单仅创建 1 条记录,因此我不确定执行此操作的最佳或惯用方法是什么。

也许我可以将如下所示的函数映射到每个提交的输入,但是 Left 情况将由第一个验证失败而不是所有验证失败触发,因此我需要在重定向到前一个之前将每个失败保存在列表中(?)表单视图。

 action CreatePostAction = do
    let post = newRecord @Post
    post
        |> fill @'["title", "body"]
        |> validateField #title nonEmpty
        |> validateField #body nonEmpty
        |> ifValid \case
            Left post -> render NewView { post }
            Right post -> do
                post <- post |> createRecord
                setSuccessMessage "Post created"
                redirectTo PostsAction
Run Code Online (Sandbox Code Playgroud)

haskell ihp

2
推荐指数
1
解决办法
151
查看次数

标签 统计

ihp ×6

haskell ×5

http ×1