Prismatic/schema适合表单验证吗?我以前从未设计过表单验证库,但我设想它会输出类似这样的内容,而不是在s/validate上抛出异常
{::errors {:name [{:missing "Required field."}
{:length "Must be at least 3 characters."}]
:email [{:email "Must be a valid email address"}]}}我希望有人在Compojure和Liberator中使用过它,但我在网上找不到任何东西。
发布于 2014-09-18 19:50:55
在Dante on GitHub中找到了一些很棒的助手,但使用许可还不清楚:
(ns dante.tools.schemas
(:require [dante.tools.namespaces :refer [export]]
[schema.core :as s]
[schema.coerce :as coerce]
[schema.utils :refer [validation-error-explain]])
(:import [schema.utils NamedError ValidationError]))
(defn explain [errors]
(cond
(map? errors)
(->> errors
(map (fn [[k v]]
[k (explain v)]))
(into {}))
(or (seq? errors)
(coll? errors))
(map explain errors)
(instance? NamedError errors)
[(.name errors)
(explain (.error errors))]
(instance? ValidationError errors)
(str (validation-error-explain errors))
:else
(str errors)))
(defn- coercercions [schema]
(or
(coerce/+string-coercions+ schema)
(coerce/set-matcher schema)))
(defn validate [schema value]
((coerce/coercer schema coercercions) value))发布于 2014-09-19 18:25:31
我将模式用于共享表单验证(ClojureScript)和服务器端(Clojure)已经有一段时间了,结果非常好。
我最初在GitHub上发布了一个关于以这种方式使用模式的建议:
如果你想要更多的例子,请让我知道。
发布于 2015-02-27 17:18:22
根据您对验证失败时所需的错误映射的描述,看起来Validateur很适合。引用他们的入门页面:
Ruby是一个受
的ActiveModel启发的验证库。Validateur是函数式的:验证器是函数,验证集是高阶函数,验证结果以值的形式返回。
围绕这个小核心,Validateur可以使用您可能需要的任何自定义验证器进行扩展:它就像定义一个符合简单约定的Clojure函数一样简单。
https://stackoverflow.com/questions/25911555
复制相似问题