mwstake/mediawiki-component-formengine

2.0.19 2024-09-13 11:44 UTC

README

MediaWiki 的 FormEngine

为 MediaWiki 提供基于 OOJS 的表单引擎。

此代码旨在在 MediaWiki 应用程序上下文中执行。不打算独立使用。

在 MediaWiki 扩展中使用

"mwstake/mediawiki-component-formengine": "~2.0" 添加到您的 composer.json 文件的 require 部分。

从 2.0 版本开始,需要显式初始化。这可以通过以下方式实现:

  • 或者将 "callback": "mwsInitComponents" 添加到您的 extension.json/skin.json
  • 或者调用 mwsInitComponents(); 在您扩展/皮肤的自定义 callback 方法中

也请参阅 mwstake/mediawiki-componentloader.

可用的 ResourceLoader 模块

  • ext.forms.init
  • ext.forms.define
  • ext.forms.standalone
  • ext.forms.widgets
  • ext.forms.form.less

要求额外的 RL 模块

表单有时会使用未在表单包中加载的字段。要包含这些包,请在定义中指定它们

{
	"name": "MyForm",
	"rlDependencies": [ "my.module" ],
	"items": {...},
	...
}

行内验证

可以通过使用 validate 键在部件定义中声明验证函数。这个函数很棘手,因为它也从输入上下文中调用,因此无法访问表单对象。如果您需要使用表单中的其他元素,请使用此语法

{
	name: 'field1',
	label: 'My field',
	type: 'text',
	validate: function( val ) {
		var form = this;
		if ( typeof this.getForm === 'function' ) {
			form = this.getForm();
		}
		if ( !( form instanceof mw.ext.forms.widget.Form ) ) {
			// No form context, we can return true here, as main validation on submit will kick in
			return true;
		}
		// Return true/false...
		// Or return a promise
	}
}