首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Liberator中使用棱镜/模式进行表单验证

在Liberator中使用棱镜/模式进行表单验证
EN

Stack Overflow用户
提问于 2014-09-18 19:32:26
回答 3查看 1.6K关注 0票数 3

Prismatic/schema适合表单验证吗?我以前从未设计过表单验证库,但我设想它会输出类似这样的内容,而不是在s/validate上抛出异常

代码语言:javascript
复制
{::errors {:name [{:missing "Required field."}
                  {:length "Must be at least 3 characters."}]
           :email [{:email "Must be a valid email address"}]}}

我希望有人在Compojure和Liberator中使用过它,但我在网上找不到任何东西。

EN

回答 3

Stack Overflow用户

发布于 2014-09-18 19:50:55

Dante on GitHub中找到了一些很棒的助手,但使用许可还不清楚:

代码语言:javascript
复制
(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))
票数 0
EN

Stack Overflow用户

发布于 2014-09-19 18:25:31

我将模式用于共享表单验证(ClojureScript)和服务器端(Clojure)已经有一段时间了,结果非常好。

我最初在GitHub上发布了一个关于以这种方式使用模式的建议:

Link here

如果你想要更多的例子,请让我知道。

票数 0
EN

Stack Overflow用户

发布于 2015-02-27 17:18:22

根据您对验证失败时所需的错误映射的描述,看起来Validateur很适合。引用他们的入门页面:

Ruby是一个受

的ActiveModel启发的验证库。Validateur是函数式的:验证器是函数,验证集是高阶函数,验证结果以值的形式返回。

围绕这个小核心,Validateur可以使用您可能需要的任何自定义验证器进行扩展:它就像定义一个符合简单约定的Clojure函数一样简单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25911555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档