This is a translation of the original English documentation page. Help us make it better.
Table of Contents

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

Action controller workflow:

  1. Check that all parameters passed in an HTTP request are valid:
  • Call the controller's checkInput() method
  • Use validation rules defined in CNewValidator.php
  • Call validateInput() method
  1. Check user permissions.

  2. Prepare the data according to passed parameters: if checkInput() returns true, Zabbix calls the controller's doAction() method.

  3. 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.