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

O conteúdo deste campo é privado não será exibido ao público. If you have a Gravatar account, used to display your avatar.
  • Quebras de linhas e parágrafos são feitos automaticamente.

Mais informações sobre as opções de formatação

CAPTCHA
Esta questão é utilizada apenas para prevenir envio automático por robôs.
Image CAPTCHA
Digite os caracteres mostrados na imagem.