Esta é uma tradução da página de documentação original em inglês. Ajude-nos a torná-la melhor.
Table of Contents

Ações

As ações são responsáveis pela 'lógica de negócios' do módulo. Uma ação geralmente consiste em um controlador e uma visualização de ação.

Um módulo pode:

  • Ações de chamada que já estão definidas no frontend do Zabbix.
  • Substituir ações padrão por ações personalizadas.
  • Definir ações completamente novas.

Para substituir um comportamento de ação padrão por algum comportamento personalizado, defina uma ação com o mesmo nome na configuração do módulo. Quando a ação é chamada, a ação do módulo será executada em vez da ação padrão do Zabbix.

Os arquivos de ação devem ser armazenados na pasta actions. Ações precisam ser especificadas no 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.