As ações são responsáveis pela 'lógica de negócios' do módulo. Uma ação geralmente consiste em um controlador e uma visualização de ação.
Um módulo pode:
Para substituir um comportamento de ação padrão por algum comportamento personalizado, defina uma ação com o mesmo nome na configuração do módulo. Quando a ação é chamada, a ação do módulo será executada em vez da ação padrão do Zabbix.
Os arquivos de ação devem ser armazenados na pasta actions. Ações precisam ser especificadas no manifest.json.
Workflow do controlador de ação:
Verifique as permissões do usuário.
Prepare os dados de acordo com os parâmetros passados: se checkInput() retornar true, o Zabbix chama o método do controlador doAction().
Prepare o array $data para a visualização. Use os métodos CControllerResponseData e setResponse() para armazenar a resposta no array $data.
Exemplo:
````php /** * Valide os parâmetros de entrada. @return bool */ protected function checkInput(): bool { $ret = $this->validateInput([ 'status' => 'in '.implode(',', [HOST_STATUS_MONITORED, HOST_STATUS_NOT_MONITORED]) ]);
}
/** * Verifique as permissões do usuário. @return bool */ protected function checkPermissions() { return $this->getUserType() >= USER_TYPE_ZABBIX_ADMIN; }
/** * Execute a ação e gere o objeto de resposta. */ protected function doAction(): void { $data = [ 'hosts_count' => API::Host()->get([ 'countOutput' => true, 'filter' => [ 'status' => $this->getInput('status') ] ]) ];
}
Você pode ver a lista completa de classes do controlador disponíveis no Zabbix [código-fonte] (https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/ui/app/controllers).