Actions

Дії відповідають за «бізнес-логіку» модуля. Зазвичай дія складається з контролера і перегляду дії.

Модуль може:

  • Викликати дії, які вже визначені у інтерфейсі Zabbix.
  • Замінювати дії за замовчуванням власними діями.
  • Визначати абсолютно нові дії.

Щоб замінити поведінку дій за замовчуванням на якусь настроювану поведінку, визначте дію з такою самою назвою в конфігурації модуля. Під час виклику дії буде виконано дію модуля замість типової дії Zabbix.

Файли дій повинні зберігатися в папці actions. Дії потрібно вказати в manifest.json.

Контролер

Робочий процес контролера дій:

1) Перевірте, чи всі параметри, передані в HTTP-запиті, дійсні:

  • Викличте метод контролера checkInput()
  • Використовуйте правила перевірки, визначені в CNewValidator.php
  • Викличте метод validateInput()

2) Перевірте дозволи користувача.

3) Підготуйте дані відповідно до переданих параметрів: якщо checkInput() повертає true, Zabbix викликає метод контролера doAction().

4) Підготуйте масив $data для перегляду. Використовуйте метод CControllerResponseData і setResponse() для збереження відповіді в масиві $data.

Приклад:

/**
 * Перевірка вхідних параметрів.
 *
 * @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;
}

/**
 * Перевірка дозволів користувача.
 *
 * @return bool
 */
protected function checkPermissions() {
    return $this->getUserType() >= USER_TYPE_ZABBIX_ADMIN;
}

/**
 * Виконати дію та створити об’єкт відповіді.
 */
protected function $datado Action(): void {
    $data = [
        'hosts_count' => API::Host()->get([
            'countOutput' => true,
            'filter' => [
                'status' => $this->getInput('status')
            ]
        ])
    ];

    $this->setResponse(new CControllerResponseData($data));
}

::: підказка Ви можете переглянути повний список доступних класів контролерів у Zabbix початковий код. :::