Áú»¢¶Ä²©

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 Áú»¢¶Ä²©.
  • 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 Áú»¢¶Ä²©.

Os arquivos de a??o devem ser armazenados na pasta actions. A??es precisam ser especificadas no manifest.json.

Controlador

Fluxo de trabalho do controlador 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 controlador
  • Usar as regras de valida??o definidas em CNewValidator.php
  • Chamar o m¨¦todo validateInput()
  1. Verifique as permiss?es do usu¨¢rio.

  2. Preparar os dados de acordo com os par?metros passados: se checkInput() retornar true, o Áú»¢¶Ä²© chama o m¨¦todo doAction() do controlador.

  3. Preparar o array $data para a visualiza??o. Use os m¨¦todos CControllerResponseData e setResponse() para armazenar a resposta no array $data.

Exemplo:

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

}

Voc¨º pode ver a lista completa de classes de controle dispon¨ªveis no Áú»¢¶Ä²© [c¨®digo-fonte] (https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/ui/app/controllers?at=refs%2Fheads%2Frelease%2F6.4).