Módulos são basicamente plugins, ou seja, são bibliotecas de códigos que tem por objetivo adicionar recursos para os componentes do framework.
O único módulo nativo do framework é o Message Module. Ele é responsável por gerenciar todas as mensagens de erro, aviso, sucesso e etc.
Para utilizar este módulo é necessário:
- Criar um template de mensagens no formato JSON, e;
- Salvar na pasta
templates/Modules/Messages/
.
Veja o exemplo do template auth.json
:
{
"description" : "Template de mensagens para o serviço de autenticação",
"messages" : {
"usuario-bloqueado" : {
"subject" : "Acesso bloqueado por excesso de tentativas",
"message" : "Olá %s, <br /> Seu acesso foi bloqueado pelo excesso de tentativas, contate o administrador para liberação. Lembre-se de que esse recurso é para sua segurança, caso necessário solicite um novo acesso para evitar transtornos futuros."
}
},
"alerts" : {
"conta-em-uso" : {
"style" : "danger",
"title" : "Ops! Conta em uso!",
"message" : "Esta conta já está registrada e sendo utilizada no momento!"
},
"tentativas-esgotando" : {
"style" : "warning",
"title" : "Ops! Verifique com cuidado os dados!",
"message" : "Suas tentativas estão acabando, você só tem %s tentativa(s)! Após exceder esse número seu acesso só será liberado através da aprovação do administrador!"
},
"dados-incorretos" : {
"style" : "info",
"title" : "Ops! Dados incorretos!",
"message" : "Não foi possível realizar a autenticação, confira seus dados!"
},
"usuario-bloqueado" : {
"style" : "danger",
"title" : "Ops! Usuário bloqueado!",
"message" : "Não foi possível realizar a autenticação, pois este usuário encontra-se bloqueado no sistema, contate o administrador para liberação!"
},
"usuario-inexistente" : {
"style" : "danger",
"title" : "Ops! Dados incorretos!",
"message" : "Não foi possível realizar a autenticação, confira seus dados!"
}
}
}
Perceba que existem três estruturas principais:
- Description;
- Messages, e;
- Alerts.
A estrutura description deve conter a descrição do template.
Já a estrutura messages deve acomodar mensagens que serão enviadas por e-mail.
E, por fim, a estrutura alerts que deve acomodar as mensagens que serão renderizadas pelo Alert Helper.
As estruturas messages e alerts contém seções pré-definidas:
- subject e message para a a estrutura messages, e;
- style, title e message para a estrutura alerts.
Estas seções devem ser acomodadas dentro de uma estrura intermediária que é nomeada com um código referente ao seu conteúdo.
Após criar e preencher os templates com seus respectivos conteúdos é possível resgatar estes valores de forma prática através do Messages Module.
O primeiro passo é declarar para o método construtor do módulo qual é o nome do template que será utilizado.
Obs: Lembre-se de não informar a extensão .json.
O código resultante seria:
$messages = new Messages('auth');
//ou
$this->load('Modules\Messages', 'auth');
Para retornar o conteúdo de uma mensagem|alerta é necessário utilizar o seguinte caminho:
$this->messages->alerts->getByCode('conta-em-uso');
Executando o código acima tem-se como retorno um array no formato necessário para ser interpretado pelo Alert Helper.
Perceba que {alerts}
é uma das opções disponíveis, isto é, trata-se da estrutura que você deseja utilizar. No template anteriormente apresentado, pode-se observar duas estruturas: messages e alerts.
$this->messages->messages->getByCode('usuario-bloqueado');
Caso queira definir uma estrutura padrão e utilizar diretamente o método getByCode($codigo)
configure o método setBlock($estrutura);
.
$this->messages->setBlock('messages');
$this->messages->getByCode('usuario-bloqueado');
Também é possível preencher valores coringas presentes na mensagem do template (%s), para tal, é necessário informar estes parâmetros em um array seguindo o padrão abaixo:
Template para exemplo:
{
"description" : "Template de mensagens para exemplo",
"alerts" : {
"codigo" : {
"style" : "info",
"title" : "%s",
"message" : "Olá %s %s, como vai?"
}
}
}
O código resultante seria:
$this->load('Modules\Messages', 'meutemplate');
$this->messages->setBlock('alerts');
$substituir_coringas = array(
'title' => 'Hello World',
'message' => array(
'Bruno',
'Santos'
)
);
$this->messages->getByCode('codigo', $substituir_coringas);