Làm thế nào để tìm các phần tử trong một mảng render


8

Tôi chỉ dành nhiều thời gian để tìm một phần tử trong một mảng render. Tôi thường sử dụng dpm()để in mảng, và sau đó mở rộng các tùy chọn cho đến khi tôi tìm thấy những gì tôi đang tìm kiếm.

Trên các mảng lớn hơn đó là cồng kềnh. Khi tôi sử dụng print_r(), tôi có thể thực hiện tìm kiếm văn bản, nhưng sau đó thật khó để thấy cấu trúc của mảng và tìm đường dẫn đến phần tử.

Những phương pháp khác bạn có thể đề nghị?


Câu hỏi này là giá trị để thêm đại diện đầy đủ của tôi !!
niksmac

Có một số mô-đun để làm đẹp lên tất cả các caca này . Tôi quá lười để đi tìm nhưng mô-đun dev tích hợp với krumo và các chất tăng cường kết xuất khác, nếu tôi nhớ chính xác. Sau đó, luôn luôn có một trình gỡ lỗi cũ tốt, nơi bạn thực sự có thể kiểm tra và lái xe xuống các đối tượng.
stefgosselin

@stefgosselin OP đã sử dụng mô-đun Devel dpm(), tôi nghĩ rằng anh ta đang tìm kiếm một chức năng để tìm một phần tử phụ trong một mảng kết xuất bằng một tên / khóa đã cho
Clive

@MotoTribe Nếu tôi đã hiểu đúng và bạn đang tìm kiếm một chức năng, loại đầu vào / đầu ra nào bạn sẽ hy vọng nhận / nhận từ nó? Nó sẽ là một cái gì đó giống như $elements = find_elements_by_key($render_array, 'element_name');trả về một mảng của tất cả các phần tử trong mảng kết xuất với một khóa phù hợp?
Clive

chính xác. Trong devel, "krumo display = tật" hiển thị một mảng được định dạng tốt hơn nơi tôi có thể sử dụng tìm kiếm văn bản. Tốt nhất là nên có một chức năng tìm kiếm trong đầu ra krumo và tính năng "sao chép" trong đó tôi có thể sao chép đường dẫn mảng đầy đủ ['...'] ['...'] mà không cần phải nhập nó. Vâng, chức năng của bạn cũng sẽ tuyệt vời. Đó không phải là một chức năng Drupal hay PHP, phải không?
uwe

Câu trả lời:


9

Có mô-đun mở rộng cho Devel: Tìm kiếm Krumo . Nó sử dụng Javascript để tìm văn bản trong các tin nhắn Krumo / dpm và mở mảng ở những nơi đó.
Trông như thế này:
nhập mô tả hình ảnh ở đây

Cập nhật

Sau ngày 22 tháng 4 năm 2012, bạn nên sử dụng sdpm()chức năng để xem hộp tìm kiếm.


không thể nào, đó chính xác là thứ tôi đang tìm kiếm !!! Cảm ơn!!!
uwe

@MotoTribe, vì vậy nó có thể được chấp nhận, tôi nghĩ vậy :)
kalabro

xin lỗi, đã bỏ lỡ cái đó Đây là một công cụ tuyệt vời, sử dụng nó mọi lúc mọi nơi !!!
uwe

nơi tôi đặt mô-đun mở rộng này? hoặc thư mục devel bên [\ www \ drupal \ trang web \ all \ modules \ devel] hoặc bên góp module thư mục [\ www \ drupal \ trang web \ all \ modules]
Gill

Bạn có thể vui lòng đề cập đến cách sử dụng hàm sdpm () không? dán ở đâu? Rất cám ơn.
CodeNext

5

Một trong những vấn đề lớn với mảng kết xuất là thường có một loạt các bản sao chỉ đọc thông tin mà bạn đang tìm kiếm. Nếu bạn thực sự muốn thay đổi kết xuất đầu ra, bạn phải tìm đúng. Tôi thường sử dụng dpm (), sau đó xem nguồn trang và tìm kiếm thông qua đầu ra ở đó, lật qua lại giữa hai màn hình cho đến khi tôi tìm thấy những gì tôi cần.

Nếu bạn muốn kết xuất nội dung của mảng kết xuất cho một đường dẫn cụ thể đến thiết bị đầu cuối (ví dụ: để chuyển nó qua grep), bạn có thể làm một cái gì đó như thế này:

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);'

Tất nhiên, bạn cũng có thể 'xem nguồn trang' trong trình duyệt của mình và sử dụng bảng tạm, nhưng ở trên có thể là khởi đầu của lệnh Drush để xem mảng kết xuất.

Cập nhật: Tôi tìm thấy một bài viết thực sự hay về chủ đề này: Scary Render Array - có lẽ là cách xử lý tốt nhất cho mảng kết xuất mà tôi đã thấy cho đến nay. Tôi cũng nên đề cập đến mô-đun devel_themer trả trước; nó thực hiện tốt công việc "phóng to" trên phần của mảng kết xuất mà bạn quan tâm.


Không thể cảm ơn bạn đủ để liên kết đến The Scary Render Array - bài viết tuyệt vời!
Andy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.