You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apostrophe输入字段验证:为字符串字段添加特定文本拦截规则

嘿,这个需求在Apostrophe里实现起来非常直观,咱们只需要给目标输入字段添加自定义验证器就能搞定。我给你详细说下具体步骤和示例代码:

步骤1:在字段Schema中添加自定义验证

找到你要设置验证的那个字符串字段(比如在某个Piece或Page模块的schema配置里),给它加上validators数组,里面放我们的自定义验证逻辑。

举个具体的例子,假设你有一个名为userInput的字符串字段,要禁止用户输入精确的"hi"文本:

// 比如在你的某个模块(如apostrophe-pieces/blog-posts/index.js)的schema里
module.exports = {
  extend: 'apostrophe-pieces',
  name: 'blog-post',
  label: '博客文章',
  addFields: [
    {
      name: 'userInput',
      label: '用户输入内容',
      type: 'string',
      required: true, // 可选,如果需要必填的话
      validators: [
        {
          name: 'forbiddenHi',
          // 验证函数:value是用户输入的值,callback用来返回验证结果
          validate: (value, callback) => {
            // 检查输入是否是精确的"hi"(不区分大小写)
            if (value && value.toLowerCase() === 'hi') {
              // 验证失败,传入错误提示文本
              return callback('抱歉,"hi"是不允许输入的内容哦');
            }
            // 验证通过,直接调用callback即可
            return callback();
          }
        }
      ]
    }
  ]
};
扩展:禁止包含"hi"的内容

如果你想要禁止**任何包含"hi"**的输入(比如"hi there"、"Hello Hi"都不行),可以把判断逻辑改成正则匹配:

validate: (value, callback) => {
  if (value && /hi/i.test(value)) {
    return callback('输入内容不能包含"hi"哦,请修改后重试');
  }
  callback();
}
进阶:复用全局验证器

如果多个字段都需要这个验证规则,你可以把它注册成全局验证器,避免重复写代码。在项目根目录的app.js里配置:

module.exports = {
  modules: {
    // 其他模块配置...
    'apostrophe-validators': {
      validators: {
        forbiddenHi: {
          validate: (value, callback) => {
            if (value && value.toLowerCase() === 'hi') {
              return callback('"hi"是禁止输入的内容');
            }
            callback();
          }
        }
      }
    }
  }
};

之后在任何字段里,只需要这样引用就能复用这个验证规则:

{
  name: 'userInput',
  label: '用户输入内容',
  type: 'string',
  validators: ['forbiddenHi']
}

这样设置后,当用户输入禁止的文本并提交表单时,Apostrophe会自动在字段下方显示你设置的错误提示,完全符合系统的默认交互逻辑~

内容的提问来源于stack exchange,提问作者Leeyung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:12:39