On this page

Darbības

Darbības ir atbildīgas par moduļa “biznesa loģiku”. Darbība parasti sastāv no kontroliera un darbības skata.

Modulis var:

  • Izsaukt darbības, kas jau ir definētas Zabbix lietotāja saskarnē.
  • Aizstāt noklusējuma darbības ar pielāgotām darbībām.
  • Definēt pilnīgi jaunas darbības.

Lai aizstātu noklusējuma darbības uzvedību ar pielāgotu uzvedību, moduļa konfigurācijā definējiet darbību ar tādu pašu nosaukumu. Kad darbība tiek izsaukta, noklusējuma Zabbix darbības vietā tiks izpildīta moduļa darbība.

Darbību faili jāglabā mapē actions. Darbības jānorāda manifest.json.

Kontrolieris

Darbību kontroliera darbplūsma:

  1. Pārbaudiet, vai visi HTTP pieprasījumā nodotie parametri ir derīgi:

    • Izsauciet kontroliera checkInput() metodi;
    • Izmantojiet validācijas noteikumus, kas definēti CNewValidator.php;
    • Izsauciet validateInput() metodi.
  2. Pārbaudiet lietotāja atļaujas.

  3. Sagatavojiet datus atbilstoši nodotajiem parametriem: ja checkInput() atgriež true, Zabbix izsauc kontroliera doAction() metodi.

  4. Sagatavojiet skatam paredzēto $data masīvu. Izmantojiet CControllerResponseData un setResponse() metodi, lai saglabātu atbildi $data masīvā.

Piemērs:

/**
 * 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));
}

Pilnu pieejamo kontrolieru klašu sarakstu varat skatīt Zabbix pirmkodā.