Drupal 菜单项和菜单回调之间有什么区别?

Drupal 菜单项和菜单回调之间有什么区别?,drupal,Drupal,菜单正常项和菜单回调之间有什么区别?菜单正常项创建菜单项,而菜单回调不创建菜单项。这是唯一的区别。更精确的答案是hook_menu()创建路由器项目,并且生成菜单链接MENU\u NORMAL\u项生成一个菜单链接,该链接将出现在导航菜单中,而MENU\u CALLBACK不添加菜单链接,因此它不会出现在菜单中。除了上述注释之外,MENU CALLBACK还可用于某些场景,如AJAX。 示例:Example.com/ajax/country_list是一个菜单回调,返回HTML、JSON或XML

菜单正常项和菜单回调之间有什么区别?

菜单正常项创建菜单项,而菜单回调不创建菜单项。这是唯一的区别。

更精确的答案是
hook_menu()
创建路由器项目,并且生成菜单链接
MENU\u NORMAL\u项
生成一个菜单链接,该链接将出现在导航菜单中,而
MENU\u CALLBACK
不添加菜单链接,因此它不会出现在菜单中。

除了上述注释之外,MENU CALLBACK还可用于某些场景,如AJAX。 示例:Example.com/ajax/country_list是一个菜单回调,返回HTML、JSON或XML格式的国家列表。。。此菜单不显示在浏览器中。
您可以访问以获取更多信息。

Drupal将URL映射到函数。
表示每个URL都需要一个函数。该函数主要存在于模块中。
ex-mysite/add将具有到模块中函数的映射。
在许多情况下,我们不希望URL作为菜单项,而是打算将其用于其他目的。最好的例子是Ajax回调。
例如:您有一个自动建议表单,它在服务器中调用一个函数suggest。前端Ajax需要一个url来触发请求。url为www.mysite/suggest
当您需要菜单回调时就是这种情况

 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
   }

我想指出的是,hook_菜单有点让人困惑——它既定义了表示路径X指向函数Y的路由器,也定义了显示页面相关链接的导航菜单。我到底为什么要添加一个不是菜单项的菜单项?因为“菜单”有点用词不当。菜单系统是Drupal 7路由器。因此,如果你想要一个URL来执行一个特定的模块/函数,那么你需要创建一个菜单回调菜单项。这是唯一能解释为什么会有菜单回调的答案。