Controles (Controllers)

SuiteCRM segue o padrão MVC (Model-View-Controller) e, como tal, tem o conceito de controladores. O controlador é responsável por fazer alterações no Modelo, bem como passar o controle para a visualização conforme apropriado. SuiteCRM tem o conceito de ações que são ações que serão executadas pelo controlador. Vamos dar uma olhada em um URL do SuiteCRM:

Exemplo 7.1: Exemplo de URL SuiteCRM
example.com/index.php?module=Accounts&action=index

Neste exemplo (bastante enfadonho), vemos que o módulo é Contas. Isso determinará qual controlador usar e, em seguida, chamará a ação de índice nesse controlador.

O SuiteCRM primeiro procurará pelo controlador em custom / module / /controller.php. Se não for encontrado, o próximo módulo / /controller.php será verificado. Finalmente, se nenhum desses controladores existir, o controlador padrão será usado. O controlador padrão pode ser encontrado em include / MVC / Controller / SugarController.php.

 

Customizando controladores
Normalmente, o controlador padrão lida com a solicitação e delega para as visualizações apropriadas, etc. No entanto, controladores personalizados podem ser usados ​​para adicionar ou alterar funcionalidades. Vejamos como adicionar uma nova ação.

Na primeira instância, teremos que adicionar nosso controlador personalizado. Isso irá variar um pouco dependendo da natureza do módulo.

 

Módulo personalizado
Neste caso, podemos colocar o arquivo diretamente em nosso módulo. Você deve criar um novo arquivo (se ele não existir) em modules / /controller.php. O conteúdo será semelhante a:

Exemplo 7.2: Criando um controlador personalizado para um módulo personalizado
<?php
if(!defined(‘sugarEntry’) || !sugarEntry) die(‘Not A Valid Entry Point’);
class <TheModule>Controller extends SugarController
{
}

 

Módulos pré-existentes
Para módulos pré-existentes, você deve adicionar o controlador a custom / modules / /controller.php. O conteúdo deste arquivo irá variar dependendo se você deseja estender o controlador existente (se houver) ou criar sua própria versão completamente. Normalmente, é melhor estender o controlador existente, pois isso manterá uma lógica importante. Você deve observar a convenção de nomenclatura aqui. Nós nomeamos a classe Controlador personalizado.
Aqui, não estendemos o controlador existente ou não existe tal controlador:

Exemplo 7.3: Criando um controlador personalizado para um módulo existente
<?php
if(!defined(‘sugarEntry’) || !sugarEntry) die(‘Not A Valid Entry Point’);
class Custom<TheModule>Controller extends SugarController
{
}

Alternativamente, estendemos o controlador existente. Observe que estamos exigindo o controlador existente:

Exemplo 7.4: Criando um controlador personalizado para um módulo existente com um controlador existente
if(!defined(‘sugarEntry’) || !sugarEntry) die(‘Not A Valid Entry Point’); require_once ‘modules//controller.php’;
class CustomController extends Controller
{
}

 

Adicionando a ação
Agora podemos adicionar uma nova ação ao nosso controlador. As ações são criadas como métodos no controlador com o nome action_ . Por exemplo, para criar uma nova ação chamada ‘echo’ podemos criar o seguinte método em um dos controladores que criamos acima. Isso pode então executar qualquer lógica necessária. Em nosso exemplo, iremos registrar o REQUEST e simplesmente redirecionar:

Exemplo 7.5: Adicionando um método de ação do controlador personalizado
public function action_echo(){
$GLOBALS[‘log’]->debug(“Echo called with request: “.print_r($_REQUEST,1)); SugarApplication::redirect(‘index.php’);
}

 

Estilo Legado
Nas versões anteriores do SugarCRM, uma nova ação foi adicionada ao criar um arquivo em modules / / .php ou custom / modules / / .php.
Embora ainda funcione, não é recomendado.