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 :
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.
Flux de travail du contrôleur d'action :
Vérifiez les autorisations des utilisateurs.
Préparez les données en fonction des paramètres passés : si checkInput() renvoie true, Zabbix appelle la méthode doAction() du contrôleur.
Préparez le tableau $data pour la vue. Utilisez la méthode CControllerResponseData et setResponse() pour stocker la réponse dans le tableau $data.
Exemple :
/**
* Valider les paramètres d'entrée.
*
* @return booléen
*/
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;
}
/**
* Vérifiez les autorisations des utilisateurs.
*
* @return booléen
*/
protected function checkPermissions() {
return $this->getUserType() >= USER_TYPE_ZABBIX_ADMIN;
}
/**
* Exécuter l'action et générer un objet de réponse.
*/
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ôleurs disponibles dans le code source Zabbix.