InputValidation 已弃用

您好!

我正在将一个相当旧的论坛版本(2.7.0)迁移到最新的 Discourse 版本。我遇到的一个问题是“discourse/models/input-validation”似乎已被移除。有人能指导我如何将其迁移到当前准确的解决方案吗?看起来现在输入验证的实现方式完全不同了。

谢谢
David

这是您编写的某个插件吗?如果可能的话,也许可以分享一个链接。

或者您正在尝试验证什么。

1 个赞

您好!是的,抱歉,这是多个插件。它在一个私有的 git 仓库中,但我可以发送代码示例。

 @computed('model.title', 'lastValidatedAt')
  titleValidation(title, lastValidatedAt) {
    if(this.model.get('titleMissing') && !title) {
      return InputValidation.create({ failed: true, reason: I18n.t('news.error.title_missing'), lastShownAt: lastValidatedAt });
    }
  },

谢谢!

所以给你们一个小技巧(顺便说一句,这并不是特别特定于 Discourse 的):

在你的 dev discourse 目录下执行:

git log -SInputValidation -p

然后 :tada:,你就可以立即看到一个潜在的现代等价物!:

-import InputValidation from “discourse/models/input-validation”;
+import EmberObject from “@ember/object”;

export default Controller.extend({
  adminWebHooks: inject(),
@@ -41,14 +41,14 @@ export default Controller.extend({
  secretValidation(secret) {
    if (!isEmpty(secret)) {
      if (secret.indexOf(" ") !== -1) {
-        return InputValidation.create({
+        return EmberObject.create({
          failed: true,
          reason: I18n.t("admin.web_hooks.secret_invalid")
        });

<SNIP>
1 个赞

太好了!我想我或许能找到与之相关的 git 更改,但我并不是一个真正的 git 大师。谢谢!这会有很大帮助。我以为我必须开始使用更具体的验证类,比如 name-validation.js 等。这看起来足够简单了。

2 个赞