manifest.json
任何模块都需要 manifest.json 文件。 该文件必须位于模块的主目录中(例如,zabbix/ui/modules/module_name/manifest.json)。
manifest.json 至少应指定以下字段:
{
"manifest_version": 2.0,
"id": "my_ip_address",
"name": "My IP Address",
"namespace": "MyIPAddress",
"version": "1.0"
}
manifest.json 支持的参数(点击参数名称可查看详细说明):
| 参数 | 描述 | 必需 |
|---|---|---|
| manifest_version | 模块的清单版本。 | 是 |
| id | 唯一的模块 ID。 | |
| name | 将在“管理”部分中显示的模块名称。 | |
| namespace | 模块类的 PHP 命名空间。 | |
| version | 模块版本。 | |
| type | 模块类型。对于小组件,必须设置为 widget。 | 小组件必需,否则不需要 |
| widget | 小组件配置。仅用于小组件。 | |
| actions | 要向模块注册的操作。 | |
| assets | 要包含的 CSS 样式和 JavaScript 文件。 | 否 |
| author | 模块作者。 | |
| config | 自定义模块选项的默认值。 | |
| description | 模块描述。 | |
| url | 指向模块描述的链接。 |
manifest_version
模块的清单版本。 目前支持的版本为 2.0。
类型: Double
示例:
"manifest_version": 2.0
id
模块 ID。
必须唯一。
为避免将来的命名冲突,建议为模块使用前缀(作者或公司名称,或其他名称)。
例如,如果模块是课程示例,模块名称为“My module”,则 ID 将为“example_my_module”。
类型:String
示例:
"id": "example_my_module"
名称
在“管理”部分中显示的模块名称。
类型: string
示例:
"name": "My module"
命名空间
模块类的 PHP 命名空间。
类型:string
示例:
"namespace": "ClockWidget"
version
模块版本。 该版本将显示在“管理”部分。
类型:字符串
示例:
"version": "1.0"
type
模块的类型。 对于小组件是必需的,且必须等于 "widget"。
类型: String
默认值: "module"
示例:
"type": "widget"
actions
要向模块注册的操作。
每个操作都必须定义 class 对象键,其他操作键为可选项。
类型:Object
当 type 为 module 时支持的对象键:
- write.your.action.name(object)- 操作名称,应使用小写字母 [a-z],并使用点号分隔单词。
支持以下键:- class(string;必需)- 操作类名称。
- layout(string)- 操作布局。
支持的值:layout.json、layout.htmlpage(默认)、null。 - view(string)- 操作视图。
示例:
"actions": {
"module.example.list": {
"class": "ExampleList",
"view": "example.list",
"layout": "layout.htmlpage"
}
}
当 type 为 widget 时支持的对象键:
- widget.{id}.view(object)- widget 视图的文件和类名称。
将 {id} 替换为 widget 的 id 值(例如,widget.example_clock.view)。
支持以下键:- class(string;必需)- widget 视图模式的操作类名称,用于扩展默认的 CControllerDashboardWidgetView 类。
类源文件必须位于 actions 目录中。 - view(string)- widget 视图。
必须位于 views 目录中。
如果视图文件为默认预期的 widget.view.php,则可以省略此参数。
如果使用其他名称,请在此处指定。
- class(string;必需)- widget 视图模式的操作类名称,用于扩展默认的 CControllerDashboardWidgetView 类。
- widget.{id}.edit(object)- widget 配置视图的文件名称。
将 {id} 替换为 widget 的 id 值(例如,widget.example_clock.edit)。
支持以下键:- class(string;必需)- widget 配置视图模式的操作类名称。
类源文件必须位于 actions 目录中。 - view(string)- widget 配置视图。
必须位于 views 目录中。
如果视图文件为默认预期的 widget.edit.php,则可以省略此参数。
如果使用其他名称,请在此处指定。
- class(string;必需)- widget 配置视图模式的操作类名称。
示例:
"actions": {
"widget.tophosts.view": {
"class": "WidgetView"
},
"widget.tophosts.column.edit": {
"class": "ColumnEdit",
"view": "column.edit",
"layout": "layout.json"
}
}
assets
要包含的 CSS 样式和 JavaScript 文件。
类型:对象
支持的对象键:
- css(数组)- 要包含的 CSS 文件。
这些文件必须位于 assets/css 目录中。 - js(数组)- 要包含的 JavaScript 文件。
这些文件必须位于 assets/js 目录中。
示例:
"assets": {
"css": ["widget.css"],
"js": ["class.widget.js"]
}
作者
模块作者。 作者将显示在“管理”部分。
类型: String
示例:
"author": "John Smith"
config
模块选项的默认值。 该对象可以包含任意自定义键。 如果指定了这些值,它们将在模块注册期间写入数据库。 之后添加的新变量将在首次调用时写入。 此后,只能直接在数据库中更改变量值。
类型:Object
示例:
"config": {
"username": "Admin",
"password": "",
"auth_url": "https://example.com/auth"
}
描述
模块描述。
类型: string
示例:
"description": "This is a clock widget."
widget
Widget 配置。 当 type 设置为 widget 时使用。
类型: Object
支持的对象键:
-
name (string) - 用于 widget 列表,并作为默认标题。 如果为空,将使用模块中的 "name" 参数。
-
size (object) - widget 的默认尺寸。 支持以下键:
- width (integer) - widget 的默认宽度。
- height (integer) - widget 的默认高度。
-
form_class (string) - 包含 widget 字段表单的类。 该类必须位于 includes 目录中。 如果类名为默认预期的 WidgetForm.php,则可以省略此参数。 如果使用其他名称,请在此处指定。
-
js_class (string) - 用于 widget 查看模式的 JavaScript 类名称,用于扩展默认的 CWidget 类。 该类将在仪表板加载时加载。 该类的源文件必须位于 assets/js 目录中。 另请参阅: assets。
-
use_time_selector (boolean) - 确定 widget 是否需要仪表板时间选择器。 支持的值: true、false(默认)。
-
refresh_rate (integer) - widget 的刷新间隔(以秒为单位)(默认值: 60)。
示例:
"widget": {
"name": "",
"size": {
"width": 12,
"height": 5
},
"form_class": "WidgetForm",
"js_class": "CWidget",
"use_time_selector": false,
"refresh_rate": 60
}
url
指向模块描述的链接。
对于小组件,在添加小组件或编辑小组件窗口中点击帮助图标
时,将打开此链接。
如果未指定 url,点击帮助图标将打开常规的仪表板小组件页面。
类型:String
示例:
"url": "http://example.com"