You are viewing documentation for the development version, it may be incomplete.
Join our translation project and help translate Zabbix documentation into your native language.
Table of Contents

Accions

Les accions són responsables de la 'lògica de negoci' del mòdul. Una acció normalment consta d'un controlador i una vista d'acció.

Un mòdul pot:

  • Fer accions de crides que són definides a la interfície de Zabbix.
  • Substituïr les accions predeterminades amb accions personalitzades.
  • Definir accions totalment noves.

Per anul·lar un comportament d'acció predeterminat amb un comportament personalitzat, definiu una acció amb el mateix nom a la configuració del mòdul. Quan es cridi l'acció, s'executarà l'acció del mòdul en lloc de l'acció Zabbix predeterminada.

Els fitxers d'acció s'han d'emmagatzemar a la carpeta actions. Les accions s'han d'especificar al manifest.json.

Control·lador

Flux de treball del controlador d'acció:

  1. Comproveu que tots els paràmetres passats en una petició HTTP siguin vàlids:
  • Crideu al mètode checkInput() del controlador
  • Empreu les regles de validació definides a CNewValidator.php
  • Crideu al mètode validateInput()
  1. Comproveu els permisos dels usuaris.

  2. Prepareu les dades segons els paràmetres passats: si checkInput() retorna cert, Zabbix crida al mètode doAction() del controlador.

  3. Prepareu la matriu $data per a la vista. Empreu el mètode CControllerResponseData i setResponse() per emmagatzemar la resposta a la matriu $data.

Exemple:

/**
        * Validació dels paràmetres d'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;
       }
       
       /**
        * Comproveu els permisos dels usuaris.
        *
        * @return bool
        */
       protected function checkPermissions() {
           return $this->getUserType() >= USER_TYPE_ZABBIX_ADMIN;
       }
       
       /**
        * Executar acció i generar objecte de resposta.
        */
       protected function do Action(): void {
           $data = [ 
               'hosts_count' => API::Host()->get([
                   'countOutput' => true,
                   'filter' => [
                       'status' => $this->getInput('status')
                   ]
               ]) 
           ];
           
           $this->setResponse(new CControllerResponseData($data));
       }

Podeu veure la llista completa de les classes de controlador disponibles al codi font de Zabbix.