#动作
动作是一个负责'业务逻辑'的模块。一个动作一般由一个触发器和一个动作视图组成。
模块可以做以下事情:
如果想通过某些自定义行为去覆盖默认动作,请在模块配置中定义具有相同名称的动作。 当调用该动作时,模板动作会被执行,而不是Zabbix默认动作。
动作文档应该存储在actions文件夹中。动作需要被指定在manifest.json。
###触发器
动作触发器工作流程:
1)检查HTTP请求中所有传递的参数是有效的: - 调用触发器的checkInput() 方法 - 使用CNewValidator.php定义的验证规则 - 调用 validateInput() 方法
2)检查用户权限 3)根据传输参数去准备数据:如果checkInput()返回trun,Zabbix调用触发器doAction()方法。 4)为视图准备$data数组。使用CControllerResponseData和setResponse() 方法将响应存储在$data数组。
例子: ````php /** * Validate input parameters. @return bool */ protected function checkInput(): bool { $ret = $this->validateInput(['status' => 'in '.implode(',', [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED])]);
if (!$ret) {
$this->setResponse(new CControllerResponseFatal());}return $ret;}/** * Check user permissions. * * @return bool */protected function checkPermissions() {return $this->getUserType() >= USER_TYPE_ZABBIX_ADMIN;}/** * Execute action and generate response object. */protected function do Action(): void {$data = [ 'hosts_count' => API::Host()->get(['countOutput' => true,'filter' => ['status' => $this->getInput('status')]]) ];$this->setResponse(new CControllerResponseData($data));}````