dpm () não exibe nenhum resultado na tela

23

Eu tenho o mesmo problema que file_scan_directory () leva cerca de 10 segundos para executar . Eu apenas tentei a dpm(func_get_args())sugestão e, infelizmente, ela não mostra nada para mim.

Limpei todos os caches e executei as tarefas cron. o que estou perdendo?

Jimmy
fonte
2
verifique se você tem permissões para Access Developer Informações sob devel em pessoas / permissões
karthik

Respostas:

28

Verifique se você possui print $messages;seu page.tpl.phparquivo de modelo. Por padrão, o devel (dpm) está configurado para imprimir seu conteúdo na área de mensagens do site. Portanto, se por algum motivo seu modelo não renderizar o conteúdo $messages, você não verá nada.

svetlio
fonte
13
  1. Às vezes krumo($variable)pode funcionar quando dpm($variable)não funciona.

  2. Às vezes print dpm($variable)pode funcionar quando dpm($variable)não funciona.

    1. também pode ser a solução quando não houver mais print $messagesno seu page.tpl.php. Talvez você possa adicioná-lo de volta.
leymannx
fonte
9

Você deve estar logado no site Drupal, com as permissões corretas para acessar o Devel. Faça o login como administrador deve fazê-lo.

Powdermonkey1850
fonte
7
Não é necessário estar logado se os usuários anônimos tiverem a permissão correta.
kiamlaluno
3
Essa permissão pode ser encontrada em 'admin / people / Permissions' em 'Acessar informações do desenvolvedor'.
precisa saber é o seguinte
9

Eu recomendo devel_debug_log . Requer o módulo devel e fornece a função ddl (). O ddl adiciona uma página aos seus relatórios na configuração; portanto, é semelhante à impressão de watchdog, mas você tem uma boa página limpa, onde pode enviar suas mensagens de depuração, e não se preocupe com as condições do tipo de corrida nas quais suas mensagens podem ser limpas antes de você uma chance de vê-los - ou, como no seu caso, problemas de tema.

(Essa também é uma ferramenta EXTREMAMENTE útil se você estiver tentando criar algum tipo de API, pois todas essas solicitações nunca mostrarão nenhum tipo de mensagem dpm ().)

Tendência inquietante
fonte
1
Esta foi a melhor solução geral para mim.
rrirower
1
Também inestimável ao depurar solicitações de ajax.
Felix Eve
8

Certifique-se de ter ativado e instalado o módulo Devel , como dpm()é uma função declarada neste módulo.

dpm()descrição retirada daqui .

Imprime uma variável na área 'mensagem' da página usando drupal_set_message (). Você pode usar esta função para acompanhar uma ou mais variáveis ​​quando estiver trabalhando no código que está executando o site. Como o módulo Devel agora vem com o Krumo, a saída é compacta e discreta.

dpm($input, $name = NULL)

Se, por algum motivo, você não estiver usando o Krumo, poderá usar o parâmetro $ name para distinguir entre diferentes chamadas para dpm ().

Depois de baixar e ativar o Devel, tente a resposta de file_scan_directory () em aproximadamente 10 segundos para executar novamente e deve funcionar.

Chapabu
fonte
Permanece o mesmo. Eu instalei e habilitei o módulo devel, limpei todos os caches, execute cron e ainda o dpm (func_get_args ()) não mostra nada.
Jimmy
Onde você está colocando dpm(func_get_args());?
Chapabu 2/03/12
No arquivo bootstrap.inc: dpm (func_get_args ()); $ correspondências = drupal_system_listing ("/ ^". DRUPAL_PHP_FUNCTION_PATTERN. "\. $ extension $ /", $ dir, 'name', 0); ...
Jimmy
Tente mudar dpm(func_get_args());para die(print_r(func_get_args());- ignorar Devel por enquanto.
Chapabu 2/03/12
3
Se o segundo comando recomendado por Chapabu não mudar nada, significa simplesmente que o código não é chamado e você não é afetado pelo mesmo problema.
Berdir
5

Se você deseja imprimi-lo de dentro de uma função sem tocar (ou ter) um arquivo de modelo, tente o seguinte:

$nid = 3;
$node = node_load($nid);
dpm($node);
print theme('status_messages'); 
Gavin Mcdonough
fonte
3

Às vezes, isso é resultado de um recurso na página retornando um 404.

Drupal renderiza a página 404 e, ao fazer isso, busca (e limpa) as mensagens da sessão e as coloca na página 404 que você não vê. Então, quando a página principal busca as mensagens, não há mais nenhuma.

Você pode abrir a guia rede e verificar se algum recurso possui um status 404.

Uma solução fácil aqui é ativar o 404 rápido descomentando esta linha em settings.php:

# drupal_fast_404();

Outra boa solução aqui é usar o devel_debug_log, conforme sugerido pelo SlakeFistcrunch.

Felix Eve
fonte
2

Às vezes, a mensagem pode ser cortada ou não funcionará no caso de AJAX.

O método mais confiável é fazer exatamente (em seguida, remover após o término):

var_dump($data); die();

Ou você pode usar dd()(também parte do Devel), por exemplo

dd(func_get_args());

depois verifique seu arquivo de log (na pasta temp), por exemplo

$ tail -f /tmp/drupal_debug.txt

O uso do método acima é mais conveniente, mais rápido e pode suportar AJAX ou outra solicitação sem interromper a renderização do site atual.


Se você ainda gosta dpm(), tente também usar kint()(ative o sub-módulo Kint incluído para essas bonitas impressões de variáveis).

kenorb
fonte
1

Se apenas algumas dpm()chamadas não funcionarem, isso pode ocorrer devido a uma dpm()falha. Vi isso acontecendo no seguinte cenário em um manipulador de envio de formulário personalizado:

function mymodule_formid_submit($form, &$form_state) {
  dpm($form_state);
}

Acredito que a condição de erro foi detectada por um manipulador de exceções dpm(), porque a página estava sendo exibida corretamente, sem WSOD ou algo assim, apenas nenhuma dpm()mensagem. O erro provavelmente é uma recursão não detectada, porque o uso ddl($form_state)resultou em um limite máximo de memória do navegador ao assistir ao objeto correspondente no relatório gerado pelo módulo Devel Debug Log.

Como solução alternativa, tente imprimir apenas uma parte (relevante) do objeto, como dpm($form_state['values'])ou dpm(array_keys($form_state)).

tanius
fonte