렌더 배열에서 요소를 찾는 방법


8

방금 렌더링 배열에서 요소를 찾는 데 많은 시간을 보냈습니다. 일반적으로 dpm()배열을 인쇄 한 다음 원하는 것을 찾을 때까지 옵션을 확장합니다.

큰 배열에서는 번거 롭습니다. 를 사용 print_r()하면 텍스트 검색을 할 수 있지만 배열의 구조를보고 요소의 경로를 찾기가 어렵습니다.

다른 방법을 제안 할 수 있습니까?


이 질문은 내 전체 담당자를 추가 할 가치가 있습니다!
niksmac

이 모든 caca를 구성하는 몇 가지 모듈이 있습니다. 내가보기에는 너무 게으르지 만 dev 모듈은 올바르게 기억한다면 krumo 및 기타 덤프 향상 기와 통합됩니다. 그런 다음 항상 좋은 오래된 디버거가있어 실제로 객체를 검사하고 운전할 수 있습니다.
stefgosselin

@stefgosselin OP는 이미 Devel 모듈을 사용하고 있습니다 dpm(). 저는 주어진 이름 / 키로 렌더 배열 내에서 하위 요소를 찾는 기능을 찾고 있다고 생각합니다.
Clive

@MotoTribe 내가 그 권리를 가지고 있고 함수를 찾고 있다면, 어떤 종류의 입력 / 출력을주고 싶습니까? $elements = find_elements_by_key($render_array, 'element_name');렌더 배열의 모든 요소 배열을 일치하는 키로 반환하는 것이 좋을까요?
Clive

옳은. "krumo display = disabled"는 텍스트 검색을 사용할 수있는 더 나은 형식의 배열을 보여줍니다. krumo 출력에는 검색 기능이 있어야하며 입력하지 않고도 전체 배열 경로 [ '...'] [ '...']를 복사 할 수있는 "복사"기능이 있어야합니다. 네, 당신의 기능도 훌륭 할 것입니다. 그것은 Drupal이나 PHP 기능이 아닙니다.
uwe

답변:


9

Devel : Search Krumo의 확장 모듈이 있습니다 . Javascript를 사용하여 Krumo / dpm 메시지에서 텍스트를 찾고 해당 위치에서 배열을 엽니 다.
다음과 같습니다 :
여기에 이미지 설명을 입력하십시오

최신 정보

2012 년 4 월 22 일 이후에는 sdpm()검색 창을 보려면 기능을 사용해야 합니다.


안 돼요, 바로 내가 찾던 것입니다 !!! 감사!!!
uwe

@MotoTribe, 그래서 받아 들일 수 있다고 생각합니다 :)
kalabro

미안, 그거보고 싶었어 이것은 멋진 도구입니다, 항상 그것을 사용하십시오!
uwe

이 확장 모듈을 어디에 두었습니까? devel 디렉토리 [\ www \ drupal \ sites \ all \ modules \ devel] 내부 또는 컨트
리뷰 션

sdpm () 함수를 사용하는 방법을 말씀해 주시겠습니까? 붙여 넣을 곳? 정말 고마워.
CodeNext

5

렌더 배열의 큰 문제 중 하나는 종종 찾고자하는 정보의 읽기 전용 복사본이 많다는 것입니다. 실제로 렌더 출력을 변경 하려면 올바른 것을 찾아야합니다. 나는 일반적으로 dpm ()을 사용하고 페이지 소스를보고 출력을 검색하여 필요한 것을 찾을 때까지 두 디스플레이 사이에서 앞뒤로 뒤집습니다.

주어진 경로에 대한 렌더 배열의 내용을 터미널로 덤프하려면 (예 : grep을 통해 전달) 다음과 같이 할 수 있습니다.

drush ev '$router_item=menu_get_item("node/7"); require_once(DRUPAL_ROOT .
"/" . $router_item["include_file"]);
$render_array=call_user_func_array($router_item["page_callback"],
$router_item["page_arguments"]); print_r($render_array);'

브라우저에서 '페이지 소스보기'를하고 클립 보드를 사용할 수도 있지만, 위의 렌더링 배열을보기 위해 Drush 명령을 시작할 수 있습니다.

업데이트 : 나는이 주제에 대해 정말 좋은 기사를 찾았습니다 : 무서운 렌더링 배열 -아마도 지금까지 본 렌더링 배열을 가장 잘 처리했을 것입니다. 또한 devel_themer 모듈을 미리 언급 했어야 합니다. 관심있는 렌더 배열의 섹션에서 "확대"에서 잘 작동합니다.


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