dpm ()은 화면에 결과를 표시하지 않습니다


23

file_scan_directory ()가 실행하는 데 약 10 초가 걸리는 것과 동일한 문제 있습니다. 방금 dpm(func_get_args())제안을 시도했지만 불행히도 그것은 나에게 아무것도 보이지 않습니다.

모든 캐시를 지우고 cron 작업을 실행했습니다. 내가 무엇을 놓치고 있습니까?


2
사람 / 권한에 따라 개발자 정보액세스 할 수있는 권한이 있는지 확인하십시오
karthik

답변:


28

템플릿 파일 print $messages;에 있는지 확인하십시오 page.tpl.php. 기본적으로 devel (dpm)은 사이트의 메시지 영역에 내용을 인쇄하도록 구성되어 있습니다. 따라서 어떤 이유로 템플릿이의 콘텐츠를 렌더링하지 않으면 $messages아무 것도 표시되지 않습니다.


13
  1. 그렇지 않은 krumo($variable)경우 때때로 작동 할 수 있습니다 dpm($variable).

  2. 그렇지 않은 print dpm($variable)경우 때때로 작동 할 수 있습니다 dpm($variable).

    1. 더있을 때 또한 해결책 일 수 있습니다 print $messages당신에 page.tpl.php더 이상. 어쩌면 다시 추가 할 수 있습니다.

9

Devel에 액세스하려면 올바른 권한으로 Drupal 사이트에 로그인해야합니다. 관리자로 로그인해야합니다.


7
익명 사용자에게 올바른 권한이 있으면 로그인 할 필요가 없습니다.
kiamlaluno

3
이 권한은 '개발자 정보 액세스'의 '관리자 / 사람 / 권한'에서 찾을 수 있습니다.
Citricguy

9

devel_debug_log를 강력히 추천 합니다 . devel 모듈이 필요하며 ddl () 함수를 제공합니다. ddl은 구성에서 보고서에 페이지를 추가하므로 워치 독으로 인쇄하는 것과 비슷하지만 디버그 메시지를 보낼 수있는 깔끔한 페이지가 있으며 메시지를 보내기 전에 경쟁 유형 조건에 대해 걱정하지 않아도됩니다. 그것들을 볼 수있는 기회, 또는 귀하의 경우와 같이 주제 문제.

(이는 모든 종류의 dpm () 메시지를 보여주지 않기 때문에 모든 종류의 API를 만들려고 할 때 매우 유용한 도구입니다.)


1
이것은 나에게 가장 좋은 전체 솔루션이었습니다.
rrirower

1
또한 아약스 요청을 디버깅 할 때 매우 중요합니다.
Felix Eve

8

이 모듈에서 선언 된 기능 으로 Devel 모듈을 활성화하고 설치했는지 확인하십시오 dpm().

dpm()여기 에서 가져온 설명 .

drupal_set_message ()를 사용하여 페이지의 '메시지'영역에 변수를 인쇄합니다. 이 기능을 사용하면 사이트를 실행하는 코드에서 작업 할 때 하나 이상의 변수를 추적 할 수 있습니다. Devel 모듈은 이제 Krumo와 함께 제공되므로 출력이 작고 눈에 거슬리지 않습니다.

dpm($input, $name = NULL)

어떤 이유로 Krumo를 사용하지 않는 경우 $ name 매개 변수를 사용하여 dpm ()에 대한 다른 호출을 구별 할 수 있습니다.

Devel을 다운로드하여 활성화 한 후 file_scan_directory () 의 응답을 다시 실행하는 데 약 10 초가 걸리며 작동해야합니다.


동일하게 유지됩니다. devel 모듈을 설치하고 활성화하고 모든 캐시를 지우고 cron을 실행했지만 여전히 dpm (func_get_args ())는 아무것도 표시하지 않습니다.
Jimmy

당신은 어디에 두 dpm(func_get_args());나요?
Chapabu

bootstrap.inc 파일에서 : dpm (func_get_args ()); $ matches = drupal_system_listing ( "/ ^". DRUPAL_PHP_FUNCTION_PATTERN. "\. $ extension $ /", $ dir, 'name', 0); ...
Jimmy

잠시 동안 Devel을 무시 dpm(func_get_args());하도록 변경하십시오 die(print_r(func_get_args());.
Chapabu

3
Chapabu가 권장하는 두 번째 명령으로 아무것도 변경되지 않으면 코드가 호출되지 않고 동일한 문제의 영향을받지 않는다는 의미입니다.
Berdir

5

템플릿 파일을 건드리지 않고 함수 내부에서 인쇄하려면 다음을 시도하십시오.

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

3

때때로 페이지의 리소스가 404를 반환하는 결과입니다.

Drupal은 404 페이지를 렌더링하고 세션에서 메시지를 가져 와서 지우고 보이지 않는 404 페이지에 넣습니다. 그런 다음 메인 페이지가 메시지를 가져올 때 남아있는 것이 없습니다.

네트워크 탭을 열고 404 상태의 리소스가 있는지 확인할 수 있습니다.

여기에서 쉬운 해결책은 settings.php 에서이 줄의 주석을 해제하여 빠른 404를 활성화하는 것입니다.

# drupal_fast_404();

또 다른 좋은 해결책은 SlakeFistcrunch 가 제안한 devel_debug_log 를 사용 하는 것입니다.


2

때때로 AJAX의 경우 메시지가 잘 리거나 작동하지 않을 수 있습니다.

보다 안정적인 방법은 다음과 같이하는 것입니다 (완료 후 제거).

var_dump($data); die();

또는 dd()(Devel의 일부)를 사용할 수도 있습니다.

dd(func_get_args());

그런 다음 임시 폴더에서 로그 파일을 확인하십시오.

$ tail -f /tmp/drupal_debug.txt

위의 방법을 사용하는 것이 더 편리하고 빠르며 현재 사이트 렌더링을 중단하지 않고 AJAX 또는 기타 요청을 지원할 수 있습니다.


그래도 여전히 마음에 들면 다음 dpm()을 사용하십시오 kint()(이 변수를 인쇄하려면 포함 된 Kint 하위 모듈을 활성화하십시오).


1

일부 dpm()통화 만 작동하지 않으면 dpm()충돌 로 인한 것일 수 있습니다 . 다음 시나리오에서 사용자 정의 양식 제출 핸들러에서 발생하는 것을 보았습니다.

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

dpm()페이지에 WSOD 또는 아무것도 표시되지 않고 dpm()메시지 가 표시되지 않았기 때문에의 예외 처리기에서 오류 조건이 포착되었다고 생각합니다 . ddl($form_state)Devel Debug Log 모듈에 의해 생성 된 보고서에서 해당 개체를 볼 때 대신 메모리를 사용하면 브라우저에서 메모리가 최대로 사용되므로 오류가 재발되지 않을 수 있습니다.

해결 방법으로, 같은 오브젝트의 만 (관련) 부분을 인쇄하려고 dpm($form_state['values'])하거나 dpm(array_keys($form_state)).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.