Sự khác nhau giữa MENU_NORMAL_ITEM và MENU_CALLBACK là gì?Sự khác nhau giữa MENU_NORMAL_ITEM và MENU_CALLBACK là gì?
Trả lời
MENU_NORMAL_ITEM
tạo mục menu trong khi MENU_CALLBACK
thì không. Đó là sự khác biệt duy nhất.
Câu trả lời chính xác hơn là hook_menu()
tạo các mục bộ định tuyến và các liên kết menu cũng được tạo. MENU_NORMAL_ITEM
tạo liên kết menu sẽ xuất hiện trong menu điều hướng, trong khi MENU_CALLBACK
không thêm liên kết menu, vì vậy liên kết này sẽ không xuất hiện trong menu.
Điều tôi muốn chỉ ra là hook_menu hơi khó hiểu - cả hai đều định nghĩa router nói rằng đường dẫn X đi đến hàm Y, nhưng nó cũng định nghĩa menu điều hướng hiển thị các liên kết liên quan đến trang bạn đang truy cập. –
Ngoài nhận xét ở trên, MENU_CALLBACK có thể được sử dụng trong một số trường hợp như AJAX. Ví dụ: example.com/ajax/country_list là MENU_CALLBACK trả về danh sách các quốc gia ở định dạng HTML, JSON hoặc XML ... Menu này không xuất hiện trong trình duyệt. Bạn có thể truy cập http://api.drupal.org/api/group/menu/6 để biết thêm thông tin.
Đây là câu trả lời duy nhất làm sáng tỏ lý do tại sao có MENU_CALLBACK. – Cheeso
Drupal ánh xạ các url hoạt động.
Có nghĩa là bạn cần một chức năng cho mọi URL. Chức năng chủ yếu có trong một mô-đun.
ex mysite/add sẽ có ánh xạ tới hàm trong mô-đun.
Nhiều trường hợp chúng tôi không muốn URL như một mục menu nhưng có ý định sử dụng nó cho các mục đích khác. Ví dụ tốt nhất là một cuộc gọi lại Ajax.
Ví dụ: bạn có biểu mẫu đề xuất tự động yêu cầu chức năng đề xuất trong máy chủ. Giao diện người dùng Ajax sẽ cần url để kích hoạt yêu cầu. Hãy đặt url là www.mysite/đề xuất
Đây là trường hợp bạn cần một MENU_CALLBACK
function example_menu() {
$items['suggest'] = array(
'page callback' => 'example_suggest',
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);
return $items;
}
function example_suggest() {
//you can return the autosuggested items to the page
}
- 1. Sự khác nhau giữa WPF và WinForms là gì?
- 2. Sự khác nhau giữa JavaScript và Java là gì?
- 3. Sự khác nhau giữa ODBC và OleDB là gì?
- 4. Sự khác nhau giữa SGML và XML là gì?
- 5. Sự khác nhau giữa DefaultSelenium và RemoteWebDriver là gì?
- 6. Sự khác nhau giữa RMI và Corba là gì?
- 7. Sự khác nhau giữa scgi và wsgi là gì?
- 8. Sự khác nhau giữa wsHttpBinding và ws2007HttpBinding là gì?
- 9. Sự khác nhau giữa Pingback và Trackback là gì?
- 10. Trong Python, sự khác nhau giữa ".append()" và "+ = []" là gì?
- 11. Sự khác nhau giữa AxInterop và Interop là gì?
- 12. Sự khác nhau giữa CellClick và CellMouseClick là gì?
- 13. Sự khác nhau giữa .bashrc, .bash_profile và .environment là gì?
- 14. Sự khác nhau giữa JSP và Facelets là gì?
- 15. Sự khác nhau giữa hg quên và hg là gì?
- 16. Sự khác nhau giữa GDI và GDI + là gì?
- 17. Sự khác nhau giữa đá quý và plugin là gì?
- 18. Sự khác nhau giữa metaClass.methods và metaClass.metaMethods là gì?
- 19. Sự khác nhau giữa kEND và $ end là gì?
- 20. Sự khác nhau giữa java và jsp là gì?
- 21. Sự khác nhau giữa Application.Run() và Form.ShowDialog() là gì?
- 22. Sự khác nhau giữa -0 và 0 là gì?
- 23. Sự khác nhau giữa HTTP 1.0 và 1.1 là gì?
- 24. Sự khác nhau giữa java.lang.Math và java.lang.StrictMath là gì?
- 25. Sự khác nhau giữa " " và "" là gì?
- 26. Sự khác nhau giữa Spring BeanFactoryAware và ApplicationContextAware là gì?
- 27. sự khác nhau giữa SCRIPT_FILENAME và SCRIPT_NAME là gì?
- 28. Sự khác nhau giữa JSP và JSTL là gì?
- 29. Sự khác nhau giữa JSF và Facelets là gì?
- 30. Sự khác nhau giữa javax.inject.Inject và com.google.inject.Inject là gì?
tại sao trên thế giới tôi muốn thêm mục menu không phải là mục menu? – Cheeso
Bởi vì 'menu' là một chút nhầm lẫn. Hệ thống menu là bộ định tuyến Drupal 7. Vì vậy, nếu bạn muốn một URL để thực hiện một mô-đun/chức năng cụ thể thì bạn cần phải tạo một mục menu MENU_CALLBACK. – BartVB