Pesquisa avançada

Manual de Criação de Menus via Banco de Dados

📘 Manual de Criação de Menus via Banco de Dados

Este documento descreve como cadastrar novos menus diretamente no banco, bem como os relacionamentos necessários para controle de exibição e permissões.


🗂️ Tabelas Envolvidas

A criação de menus utiliza 3 tabelas:

  1. tb_menu → Estrutura do menu (hierarquia e exibição)

  2. tb_tipo_login_menu → Define quais tipos de login podem ver o menu

  3. tb_permissao_menu → Define quais permissões liberam o menu


1️⃣ Cadastro na tb_menu

A tabela tb_menu define a estrutura visual e hierárquica do menu.

Existem 3 cenários possíveis:


🔹 1.1 Menu de 1º Nível (SEM filhos)

📌 Menu que abre diretamente uma página.

Condição obrigatória:

pai_list_menu IS NULL
AND link_menu NOT LIKE '#%'
Campo Valor
status 1 = Exibe / 0 = Oculta
nome_menu Nome exibido na tela
data-localize_menu Código i18n (opcional)
classe_menu Classe CSS (Font Awesome 3 – ícone)
link_menu URL / rota da página
title_menu Tooltip do menu
data-toggle_menu Vazio
id_list_menu Identificador do <li> (iniciar com mn_)
class_list_menu Vazio
ul_id Vazio
ul_class Vazio
pai_list_menu Vazio
ordem_menu Ordem de exibição (menor → maior)

Exemplo id_list_menu:

mn_dashboard

🔹 1.2 Menu de 1º Nível (COM filhos)

📌 Menu que não abre página, apenas agrupa submenus.

Condição obrigatória:

pai_list_menu IS NULL
AND link_menu LIKE '#%'
Campo Valor
status 1 = Exibe
nome_menu Nome exibido
data-localize_menu Opcional
classe_menu Ícone do menu
link_menu # + palavra-chave (ex: #acessos)
title_menu Tooltip
data-toggle_menu collapse (efeito acordeon)
id_list_menu Deve começar com mn_
class_list_menu Vazio
ul_id Vazio
ul_class Vazio
pai_list_menu Vazio
ordem_menu Ordem na tela

🔹 1.3 Menu de 2º Nível (Submenu)

📌 Menu que pertence a outro menu.

Campo Valor
status 1 = Exibe
nome_menu Nome exibido
data-localize_menu Opcional
classe_menu Vazio (usar apenas se também for pai de 3º nível)
link_menu URL da página OU #chave se for pai
title_menu Tooltip
data-toggle_menu Vazio (ou collapse se tiver filhos)
id_list_menu Deve começar com mn_
class_list_menu Vazio
ul_id ID do <ul> pai
ul_class Classe do <ul> pai
pai_list_menu ID do menu pai
ordem_menu Ordem dentro do submenu

2️⃣ Cadastro na tb_tipo_login_menu

Define QUEM pode ver o menu com base no tipo de login.

🎯 Tipos de Login

Código Tipo
0 Master
1 Corporativo
2 Proprietário
3 Acesso (Condomínio)

📌 Regra Importante

➡️ Um mesmo menu pode aparecer para vários tipos de login.
➡️ Cada combinação exige um novo registro.

✅ Exemplo

Menu ID 20 visível para:

  • Corporativo (1)

  • Acesso (3)

Registros necessários:

id_menu = 20 | tipo_login_menu = 1
id_menu = 20 | tipo_login_menu = 3

3️⃣ Cadastro na tb_permissao_menu

Define QUAL PERMISSÃO libera o menu dentro do perfil do usuário.

Campo Descrição
id_menu ID do menu
permissao_menu Código da permissão (ex: CO201)

📌 Regras

✔ Um menu pode ter mais de uma permissão vinculada
✔ Permissões normalmente terminam com 01
✔ Cada permissão = 1 novo registro


✅ Exemplo

Menu ID 20 liberado por duas permissões:

id_menu = 20 | permissao_menu = CO201
id_menu = 20 | permissao_menu = AG301

✅ Fluxo Correto de Criação (Resumo)

1️⃣ Criar o menu na tb_menu
2️⃣ Vincular os tipos de login na tb_tipo_login_menu
3️⃣ Vincular as permissões na tb_permissao_menu


⚠️ Erros Comuns

❌ Esquecer mn_ no id_list_menu
❌ Não cadastrar tipo de login → menu não aparece
❌ Não cadastrar permissão → menu invisível mesmo existindo
❌ Usar link normal em menu pai (deve começar com #)
❌ Não preencher pai_list_menu em submenu


📌 Boas Práticas

✔ Use nomes de link_menu padronizados (#cadastros, #relatorios)
✔ Mantenha ordem_menu espaçada (10,20,30…) para facilitar inserções futuras
✔ Sempre valide se o <ul> pai existe antes de vincular submenu
✔ Teste com usuário real após cadastro


Fim do Manual

Não pode comentar este artigo

Avalie este conteúdo:

0 (0 Votos)