IHP: 如何基于另一个字段的值对指定字段进行校验
问题原因
fill 操作是纯函数,仅会返回填充了表单值的新记录,不会修改你传入的原始 co2Producer 参数。你当前校验 #commonSingleConsumptionTo 时读取的是未经过 fill 的原始参数的 #commonSingleConsumptionFrom 字段,数值类型字段的默认值为0,所以不管表单输入什么值,这里拿到的都是0。
解决方法
你只需要先把 fill 后的新记录绑定为变量,再基于这个填充后的记录做校验即可,改动后的代码如下:
buildCo2Producer co2Producer = let filledCo2Producer = co2Producer |> fill @["commonSingleConsumptionFrom", "commonSingleConsumptionTo"] in filledCo2Producer |> validateField #commonSingleConsumptionFrom (isGreaterThan 0) |> validateField #commonSingleConsumptionTo (isGreaterThan $ get #commonSingleConsumptionFrom filledCo2Producer)
内容的提问来源于stack exchange,提问作者Philip Schönholzer
相关产品推荐
相关产品推荐

