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

Acties

Acties zijn verantwoordelijk voor de 'bedrijfslogica' van de module. Een actie bestaat meestal uit een controller en een action-view.

Een module kan:

  • Acties oproepen die al zijn gedefinieerd in de Zabbix-frontend.
  • Standaard acties overschrijven met aangepaste acties.
  • Volledig nieuwe acties definiëren.

Om een standaard actiegedrag te overschrijven met aangepast gedrag, definieert u een actie met dezelfde naam in de moduleconfiguratie. Wanneer de actie wordt aangeroepen, wordt de module-actie uitgevoerd in plaats van de standaard actie.

Actiebestanden moeten worden opgeslagen in de map actions. De acties moeten worden gespecificeerd in manifest.json.

Controller

Werkstroom actiecontroller:

  1. Controleer of alle parameters die in een HTTP-verzoek worden doorgegeven, geldig zijn:
  • Roep de checkInput() methode van de controller aan.
  • Gebruik validatieregels gedefinieerd in CNewValidator.php
  • Roep de methode validateInput() aan
  1. Controleer gebruikersrechten.

  2. Bereid de gegevens voor volgens de doorgegeven parameters: als checkInput() waar retourneert, roept Zabbix de doAction()-methode van de controller aan.

  3. Maak de array $data klaar voor de weergave. Gebruik de methoden CControllerResponseData en setResponse() om het antwoord op te slaan in de array $data.

Voorbeeld:

/**
       * Invoerparameters valideren.
       *
       * @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;
       }
         
       /**
       * Gebruikersrechten controleren.
       *
       * @return bool
       */
       
       protected function checkPermissions() {
           return $this->getUserType() >= USER_TYPE_ZABBIX_ADMIN;
       }
       
       /**
       * Actie uitvoeren en return object genereren.
       */
       
       protected function do Action(): void {
           $data = [
               'hosts_count' => API::Host()->get([
                   'countOutput' => true,
                   'filter' => [
                       'status' => $this->getInput('status')
                   ]
               ])
           ];
           
           $this->setResponse(new CControllerResponseData($data));
       }

U kunt de volledige lijst met beschikbare controllerklassen bekijken in Zabbix broncode.