Esta seção aborda os Helpers do HXPHP.
Os Helpers são componentes auxiliares. Em suma, são objetos que desempenham funções nas views
.
O Alert Helper é responsável pela exibição de mensagens de aviso, erro, sucesso e afins.
Para utilizar este helper é necessário passar um array como parâmetro no construtor e este deve conter a seguinte estrutura:
array(
'danger', // Classes Bootstrap disponíveis: danger, warning, info, success
'Título da mensagem',
'Conteúdo da mensagem' // Pode ser um array com várias mensagens
);
O código resultante seria:
class ProdutosController extends \HXPHP\System\Controller
{
public function indexAction()
{
$alerta = [
'success',
'Uhuul! Produto cadastrado com sucesso!',
'O produto já está disponível para seus clientes.'
];
$this->load('Helpers\Alert', $alerta);
var_dump($this->alert->getAlert()); // ou
echo $this->alert;
}
}
O método getAlert()
, responsável pela renderização do alerta, é inserido na view e geralmente é encontrado em cabeçalhos para evitar a repetição de códigos.
É válido ressaltar que o alerta renderizado é gerado a partir de um template localizado na pasta: templates/Helpers/Alert/
.
O Menu Helper tem a função de renderizar um menu customizado mediante o nível de acesso do usuário.
Diferentemente do Alert Helper, que trabalha com templates, este conta com um módulo específico de configuração. Portanto, antes de utilizá-lo, é necessário verificar se o módulo está registrado.
O módulo contém dois métodos:
setMenus()
: Que é responsável por definir a estrutura do menu e, opcionalmente, o nível de acesso;setConfigs()
: Que é responsável por customizar o menu que será renderizado.
Exemplo de configuração para definir dois menus (o primeiro para usuários com nível de acesso igual a administrator e o segundo que é neutro):
$configs->env->development->menu->setMenus(array(
'Home/home' => '%siteURL%',
'Projetos/briefcase' => '%baseURI%/projetos/listar/',
'Clientes/users' => array(
'Listar todos/users' => '%baseURI%',
'Tipos de clientes/users' => '%baseURI%/clientes/tipos'
),
'Usuários/users' => '%baseURI%/usuarios/listar/'
), 'administrator');
$configs->env->development->menu->setMenus(array(
'Home/home' => '%siteURL%/home',
'Projetos/briefcase' => '%baseURI%/projetos/listar/'
));
Observações:
- O método suporta 2 argumentos: (array)
$menus
e (string)$access_level
; - O segundo argumento é opcional, isto é, também é possível definir um menu sem um nível de acesso para páginas públicas e afins;
- O array com os menus é padronizado da seguinte forma:
array(
'Menu Sem Dropdown/codigo-icone-font-awesome-sem-prefixo' => 'http://www.link-absoluto.com',
'Usuários/users' => '%baseURI%/link-relativo',
'Menu Com Dropdown/home' => array(
'Submenu/briefcase' => '%baseURI%/link-relativo',
'Submenu #2/users' => '%baseURI%/link-relativo'
)
)
- É possível utilizar os coringas
%baseURI%
e%siteURL%
que são substituídos pelo valor da configuraçãobaseURI
e pelo endereço do site, respectivamente; - A ferramenta Font Awesome foi utilizada nos ícones que acompanham os títulos nos menus e submenus, e;
- O prefixo
fa
utilizado para a exibição dos ícones é inserido nativamente.
Exemplo com todas as possíveis configurações do menu:
$configs->env->development->menu->setConfigs(array(
'container' => false, // Tag container (opcional). Ex: nav
'container_id' => '',
'container_class' => '',
'menu_id' => 'menu',
'menu_class' => 'menu',
'menu_item_class' => 'menu-item',
'menu_item_active_class' => 'active',
'menu_item_dropdown_class' => 'dropdown',
'link_before' => '<span>', // Conteúdo anterior ao título
'link_after' => '</span>', // Conteúdo posterior ao título
'link_class' => 'menu-link',
'link_active_class' => 'menu-active-link',
'link_dropdown_class' => 'dropdown-toggle',
'link_dropdown_attrs' => array(
'data-toggle' => 'dropdown' // Data Atributos para ativação do dropdown
),
'dropdown_class' => 'dropdown-menu',
'dropdown_item_class' => 'dropdown-item',
'dropdown_item_active_class' => 'active'
));
O exemplo acima está com todos os valores padrão, portanto, caso necessite customizar o seu menu, insira apenas as configurações que deseja alterar o valor padrão.
Este helper requer duas dependências no construtor: Request
e Configs
. E se o menu for específico para um nível de acesso também é necessário informar o respectivo valor.
O código resultante seria:
class ProdutosController extends \HXPHP\System\Controller
{
public function indexAction()
{
$this->load(
'Helpers\Menu',
$this->request,
$this->configs,
$this->auth->getUserRole() //access_level
);
}
}
Após configurar e carregar o helper na action desejada, será possível renderizar o menu na view. Para tal, utilize o método getMenu()
.
Exemplos:
echo $this->menu->getMenu();