您好!
我正在将一个相当旧的论坛版本(2.7.0)迁移到最新的 Discourse 版本。我遇到的一个问题是“discourse/models/input-validation”似乎已被移除。有人能指导我如何将其迁移到当前准确的解决方案吗?看起来现在输入验证的实现方式完全不同了。
谢谢
David
您好!
我正在将一个相当旧的论坛版本(2.7.0)迁移到最新的 Discourse 版本。我遇到的一个问题是“discourse/models/input-validation”似乎已被移除。有人能指导我如何将其迁移到当前准确的解决方案吗?看起来现在输入验证的实现方式完全不同了。
谢谢
David
这是您编写的某个插件吗?如果可能的话,也许可以分享一个链接。
或者您正在尝试验证什么。
您好!是的,抱歉,这是多个插件。它在一个私有的 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
然后
,你就可以立即看到一个潜在的现代等价物!:
-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>
太好了!我想我或许能找到与之相关的 git 更改,但我并不是一个真正的 git 大师。谢谢!这会有很大帮助。我以为我必须开始使用更具体的验证类,比如 name-validation.js 等。这看起来足够简单了。