Olá pessoal,
Estou usando a versão 9.12 com a última atualização até hoje. E estou tentando montar um menu dinâmico mas tudo que consegui até agora foi a criação dos menus pai mas os submenus (filhos) não consegui criar. Vou colocar aqui as tabelas envolvidas e o código que fiz baseado num modelo do próprio site da Scriptcase (https://tutoriais.myscriptcase.com/tutoriais/pt/menu-dinamico/):
TABELAS:
CREATE TABLE menu
(
ID
INTEGER NOT NULL AUTO_INCREMENT,
MENUID
INTEGER DEFAULT NULL,
NOME
VARCHAR(100) COLLATE utf8mb4_0900_ai_ci NOT NULL,
ENDERECOURL
VARCHAR(100) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
IMAGEM
BLOB DEFAULT NULL,
ORDEM
INTEGER NOT NULL,
ATIVO
ENUM(‘True’,‘False’) COLLATE utf8mb4_0900_ai_ci NOT NULL,
TARGETMENU
VARCHAR(15) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
HINTMENU
VARCHAR(255) COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
PRIMARY KEY USING BTREE (ID
),
KEY MENUID
USING BTREE (MENUID
),
CONSTRAINT menu_ibfk_1
FOREIGN KEY (MENUID
) REFERENCES menu
(ID
)
) ENGINE=InnoDB;
CREATE TABLE perfil
(
ID
INTEGER NOT NULL AUTO_INCREMENT,
NOME
VARCHAR(100) COLLATE utf8mb4_0900_ai_ci NOT NULL,
HABILITA
TINYINT(1) NOT NULL COMMENT ‘Habilitar este o registro para ser padrão quando o usuário se cadastrar no site.’,
PRIMARY KEY USING BTREE (ID
),
UNIQUE KEY NOME
USING BTREE (NOME
)
) ENGINE=InnoDB;
CREATE TABLE permissaomenu
(
ID
INTEGER NOT NULL AUTO_INCREMENT,
PERFILID
INTEGER NOT NULL,
MENUID
INTEGER NOT NULL,
ATIVO
ENUM(‘True’,‘False’) COLLATE utf8mb4_0900_ai_ci NOT NULL,
PRIMARY KEY USING BTREE (ID
),
UNIQUE KEY permissaomenu_idx1
USING BTREE (PERFILID
, MENUID
),
KEY permissaomenu_fk2
USING BTREE (MENUID
),
CONSTRAINT permissaomenu_fk1
FOREIGN KEY (PERFILID
) REFERENCES perfil
(ID
),
CONSTRAINT permissaomenu_fk2
FOREIGN KEY (MENUID
) REFERENCES menu
(ID
)
) ENGINE=InnoDB
CÓDIGO - EVENTO ONLOAD
sc_appmenu_reset("menu");
sc_appmenu_create("menu");
sc_lookup(Ds,"SELECT ID, NOME FROM menu WHERE MENUID IS NULL");
foreach({Ds} as $arr_menu) {
sc_appmenu_add_item(menu, "item_".$arr_menu[0], , $arr_menu[1], '#', menuid=$arr_menu[0];menunome=$arr_menu[1], , ,);
$sSQL = "SELECT A.ID, A.MENUID, B.NOME, B.ENDERECOURL, B.HINTMENU, B.TARGETMENU
FROM permissaomenu A
INNER JOIN menu B ON (B.ID = A.MENUID)
WHERE A.PERFILID = ".[g_perfilid]."
AND B.MENUID = ".$arr_menu[0]."
AND B.ATIVO = 'True'";
sc_lookup(DsItem, $sSQL);
if(!empty({DsSubItem}))
foreach({DsSubItem} as $arr_submenu) {
sc_appmenu_add_item('menu', 'item_'.$arr_menu[0].$arr_submenu[0], 'item_'.$arr_menu[0], $arr_submenu[3], $arr_submenu[0], , , $arr_submenu[4], $arr_submenu[5]);
}
}
Como posso resolver isso?
Grato,
Ilano.