Las acciones son responsables de la 'lógica de negocio' del módulo. Una acción generalmente consiste en un controlador y una vista de acción.
Un módulo puede:
Para sobrescribir el comportamiento de una acción por defecto con algún comportamiento personalizado, defina una acción con el mismo nombre en la configuración del módulo. Cuando se llame a la acción, se ejecutará la acción del módulo en lugar de la acción por defecto de Zabbix.
Los archivos de acciones deben almacenarse en la carpeta actions. Las acciones deben especificarse en el manifest.json.
Flujo de trabajo del controlador de acciones:
Comprobar los permisos del usuario.
Preparar los datos según los parámetros pasados: si checkInput() devuelve true, Zabbix llama al método doAction() del controlador.
Preparar el array $data para la vista. Utilice CControllerResponseData y el método setResponse() para almacenar la respuesta en el array $data.
Ejemplo:
/**
* Validar los parámetros de entrada.
*
* @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;
}
/**
* Comprobar los permisos del usuario.
*
* @return bool
*/
protected function checkPermissions() {
return $this->getUserType() >= USER_TYPE_ZABBIX_ADMIN;
}
/**
* Ejecutar la acción y generar el objeto de respuesta.
*/
protected function do Action(): void {
$data = [
'hosts_count' => API::Host()->get([
'countOutput' => true,
'filter' => [
'status' => $this->getInput('status')
]
])
];
$this->setResponse(new CControllerResponseData($data));
}
Puede ver la lista completa de clases de controladores disponibles en el código fuente de Zabbix.