Você está visualizando a documentação da versão de desenvolvimento, que pode estar incompleta.
Esta página foi traduzida automaticamente. Se você notar um erro, selecione-o e pressione Ctrl+Enter para reportá-lo aos editores.
Table of Contents

Ações

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

Um módulo pode:

  • Chamar ações que já estão definidas no frontend do Zabbix.
  • Sobrescrever ações padrão com ações personalizadas.
  • Definir ações completamente novas.

Para sobrescrever o comportamento padrão de uma ação com algum comportamento personalizado, defina uma ação com o mesmo nome na configuração do módulo. Quando a ação for 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. As ações precisam ser especificadas no manifest.json.

Controller

Fluxo de trabalho do controller de ação:

  1. Verifique se todos os parâmetros passados em uma solicitação HTTP são válidos:
  • Chame o método checkInput() do controller
  • Use as regras de validação definidas em CNewValidator.php
  • Chame o método validateInput()
  1. Verifique as permissões do usuário.

  2. Prepare os dados de acordo com os parâmetros passados: se checkInput() retornar verdadeiro, o Zabbix chama o método doAction() do controller.

  3. Prepare o array $data para a view. Use CControllerResponseData e o método setResponse() para armazenar a resposta no array $data.

Exemplo:

/**
        * Valida os parâmetros de 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;
       }
       
       /**
        * Verifica as permissões do usuário.
        *
        * @return bool
        */
       protected function checkPermissions() {
           return $this->getUserType() >= USER_TYPE_ZABBIX_ADMIN;
       }
       
       /**
        * Executa a ação e gera o objeto 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));
       }

Você pode visualizar a lista completa de classes de controller disponíveis no código-fonte do Zabbix.