如何在Drupal 7中将表单添加为菜单项?

时间:2018-09-28 20:52:33

标签: php drupal drupal-7 openid-connect

我正在使用OpenID Connect模块来将Drupal 7站点与OpenID提供程序作为客户端连接。到目前为止,我仅使用现成的功能和提供的登录块就可以启动并运行该模块,并通过提供程序注册和登录用户。

我现在想要实现的是将模块提供的块呈现为链接的形式放在我的主菜单中。

通过更改模块的hook_menu,我已经能够在菜单中添加链接:

$items[''] = array(
    'title' => 'OpenID Connect',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('openid_connect_login_form'),
    'access callback' => TRUE,
    'type' => MENU_NORMAL_ITEM,
);

但这并不能按预期工作。

我想要的是将模块在模块中呈现的表单插入菜单项,或生成一个与在模块中创建的表单一样工作的链接。

或者,我可以渲染隐藏表单的块,并创建一个菜单链接,该菜单链接不会重定向到页面,而是通过JS查找并提交表单,但是我也不知道该怎么做那个。

我对Drupal还是比较陌生,对所有阅读内容都感到头晕,所以我来找互联网上的同伴寻求帮助;任何建议和指导都欢迎。

谢谢。

2 个答案:

答案 0 :(得分:0)

hook_menu允许定义菜单项和页面回调。 您必须像这样在$ item中添加页面路径:$ items ['path']。 然后清除高速缓存以使更改生效并访问您应有的路径。

答案 1 :(得分:0)

您需要在模块中实现hook_menu。示例:

<?php
function mymodule_menu() {

  $items['mymodule/links'] = array(
    'title' => 'OpenID Connect', 
    'page callback' => 'drupal_get_form', 
    'access arguments' => array('openid_connect_login_form'),
    'type' => MENU_NORMAL_ITEM,
  );
  return $items;
}
?>

在对drupal代码或设置进行任何更改后,请清除缓存。