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.
Action controller workflow:
Check user permissions.
Prepare the data according to passed parameters: if checkInput() returns true, Zabbix calls the controller's doAction() method.
Prepare the $data array for the view. Use CControllerResponseData and setResponse() method to store response in the $data array.
Example:
/**
* 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));
}
You can view the full list of available controller classes in Zabbix source code.