Actions
Les actions sont responsables de la "logique métier" du module. Une action se compose généralement d'un controller et d'une vue d'action.
Un module peut :
- Appeler des actions déjà définies dans l'interface Zabbix.
- Remplacer les actions par défaut par des actions personnalisées.
- Définir des actions complètement nouvelles.
Pour remplacer un comportement d'action par défaut par un comportement personnalisé, définissez une action portant le même nom dans la configuration du module. Lorsque l'action est appelée, l'action du module sera exécutée à la place de l'action Zabbix par défaut.
Les fichiers d'action doivent être stockés dans le dossier actions. Les actions doivent être spécifiées dans le manifest.json.
Controller
Flux de travail du contrôleur d'action :
-
Vérifiez que tous les paramètres transmis dans une requête HTTP sont valides :
- Appelez la méthode checkInput() du contrôleur ;
- Utilisez les règles de validation définies dans CNewValidator.php ;
- Appelez la méthode validateInput().
-
Vérifiez les permissions de l'utilisateur.
-
Préparez les données en fonction des paramètres transmis : si checkInput() renvoie true, Zabbix appelle la méthode doAction() du contrôleur.
-
Préparez le tableau $data pour l'interface. Utilisez CControllerResponseData et la méthode setResponse() pour stocker la réponse dans le tableau $data.
Exemple :
/**
* 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));
}
Vous pouvez consulter la liste complète des classes de contrôleur disponibles dans le code source de Zabbix.