Akcje
Za 'logikę biznesową' modułu odpowiadają akcje. Akcja zwykle składa się z controller i action view.
Moduł może:
- Wywołać akcje, które są już zdefiniowane w interfejsie frontowym Zabbix.
- Zastąpić akcje domyślne akcjami niestandardowymi.
- Zdefiniować zupełnie nowe akcje.
Aby zastąpić domyślne zachowanie akcji jakimś niestandardowym zachowaniem, zdefiniuj akcję o tej samej nazwie w konfiguracji modułu. Kiedy akcja zostanie wywołana, zamiast domyślnej akcji Zabbix'a zostanie wykonana akcja modułu.
Pliki akcji powinny być przechowywane w folderze akcje. Akcje muszą być określone w pliku manifest.json.
Kontroler
Przepływ pracy kontrolera akcji:
-
Sprawdź, czy wszystkie parametry przekazane w żądaniu HTTP są prawidłowe:
- Wywołaj metodę checkInput() kontrolera;
- Użyj reguł walidacji zdefiniowanych w CNewValidator.php;
- Wywołaj metodę validateInput().
-
Sprawdź uprawnienia użytkownika.
-
Przygotuj dane zgodnie z przekazanymi parametrami: jeśli checkInput() zwróci true, Zabbix wywoła metodę doAction() kontrolera.
-
Przygotuj tablicę $data dla widoku. Użyj CControllerResponseData oraz metody setResponse(), aby zapisać odpowiedź w tablicy $data.
Przykład:
/**
* 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));
}
Pełną listę dostępnych klas kontrolerów w Zabbix można zobaczyć w kodzie źródłowym.