Página do drupal com Acesso negado, Saiba como debugar um path declarado no hook_menu?
Perdi mais ou menos umas 4 horas tentando encontrar o problema um erro de acesso negado no Drupal, meu hook_menu estava perfeitamente correto e já tinha limpado cache, reconstruído o menu e nada.
Após algumas trocas de mensagens no mirc aprendi a usar a função dsm( $var ); do módulo devel que gera uma espécie de var_dump estilizado, simplesmente show. Com o código gerado com essa função eu percebi que a função callback utilizada no path era uma função de outro módulo, isso porque 2 módulos estavam com menu paths iguais e assim entravam em conflito.
Se você estiver tendo problema de acesso em algum path, edite o arquivo includes/menu.inc e altere a função para imprimir na tela o objeto do menu que o drupal irá utilizar para fazer a checagem da permissão.
....
function menu_execute_active_handler($path = NULL) {
.....
if ($router_item = menu_get_item($path)) {
dsm( $router_item ); // ******** I put here the code to debug ***********
if ($router_item['access']) {
if ($router_item['file']) {
require_once($router_item['file']);
}
return call_user_func_array($router_item['page_callback'], $router_item['page_arguments']);
}
else {
dsm('acesso negado');
return MENU_ACCESS_DENIED;
}
}
return MENU_NOT_FOUND;
essa é a função do drupal que verifica o path que você está acessando e possui todas as variaveis necessárias para você debugar o problema.
O código adicionado na função irá imprimir as varáveis para nós, perceba que você só conseguirá acessar o path caso o atributo access seja TRUE.
A imagem abaixo mostra o retorno da função dsm adiciona acima.


Comentar