mediawiki - 如何向用户显示自定义错误消息?
问题描述
我有一个简单的扩展程序,它通过确保具有特定类别的所有页面都包含其中的特定模板来验证文章页面。我的检查发生在一个onPageContentSave
函数中。
我按照文档使用了 $status->fatal(),然后返回 false 以中止保存。但是,没有向用户显示任何内容,因此他们不知道出了什么问题。
我试过的:
public static function onPageContentSave($wikiPage, $user, $content, $summary, $isMinor, $isWatch, $section, $flags, $status) {
$content = $content->getNativeData();
$response = self::httpPost("http://api.oneorzero.org:9999/theo", ['data' => json_encode(['wikiPage' => $wikiPage, 'user' => $user, 'content' => $content, 'summary' => $summary, 'isWatch' => $isWatch, 'section' => $section, 'flags' => $flags, 'status' => $status])]);
$response = json_decode($response, true);
$continue = false;
if(json_encode($response) == '{"message":"success"}') {
$continue = true;
} else {
$status->fatal( new RawMessage(json_encode($response)));
}
// $response should be true on success, and false on fail
// false cancels the article save
return $continue;
}
此代码在 RawMessage 从未向用户显示的例外情况下有效。
任何帮助表示赞赏
解决方案
看来您想要AbuseFilter。定义一个显示错误消息的规则(您可以选择哪个),如果用户尝试保存具有类别且没有模板的页面而不是保存页面,则如下所示:
action == 'edit'
& new_wikitext irlike '\[\[category:your_category(\|[^\]]*)?\]\]'
& !new_wikitext irlike '\{\{your_template(\|[^}]*)?\}\}'
- 第一个条件仅适用于页面编辑/创建。
- 它将不区分大小写地检查页面的新 wikitext 和正则表达式,该正则表达式应该找到对 category 的分配
Your_category
。 - 最后,它将检查新的 wikitext 是否包含对模板的调用
{{Your_template}}
。
推荐阅读
- maven - 在war中部署Spring Boot APP到外部tomcat
- mysql - 如果 count == 0 SQL 返回 0
- ansible - Ansible - 从列表中创建字典
- prolog - 为什么 Prolog 长度函数以 1+1+... 的形式返回总和?
- javascript - 为什么在页面加载时自动触发按钮单击事件 - React.js
- json - oracle json生成方法中的数字表示不正确
- scala - 生成具有不同列数的数据框
- c# - 用户 signalR 聊天读取的消息
- llvm - 如何使用 IRBuilder 在 llvm 中插入 stdlib C 函数?
- php - 访问禁止运行php