通过URI(而不是GET方法)将值传递给函数

时间:2011-03-18 23:54:18

标签: php drupal drupal-6 drupal-hooks hook-menu

我正在编写一个Drupal 6模块,它通过URI将一个用户ID +一个随机生成的字符串发送给一个函数。我正在使用菜单钩子:

function invites_menu() {    
  // ...    
  $items['invites/auth'] = array(
    'title' => 'Are you human?',
    'page callback' => 'invites_pageAuth',
    'access arguments' => array('access invites content'),
    'page arguments' => array(2),
    'type' => MENU_CALLBACK
  );
  // ...
}

我是Drupal的新手,但据我所知(我很可能会误会),这应该将两个值传递给回调函数,出于测试目的,目前看起来像这样:

function invites_pageAuth($auth = NULL, $uid = NULL) {
  drupal_set_message("uid: $uid <br /> $auth");
}

我使用的网址是'invites / auth / RANDOMSTRING / USERID'。这似乎两次得到第一个值; $ auth和$ uid都包含'RANDOMSTRING'。

我错过了一些非常简单的事情吗? 谢谢。

2 个答案:

答案 0 :(得分:4)

function invites_menu()
{    
...    
    $items['invites/auth/%/%'] = array(
            'title' => 'Are you human?',
            'page callback' => 'invites_pageAuth',
            'access arguments' => array('access invites content'),
            'page arguments' => array(2, 3),
            'type' => MENU_CALLBACK
          );
    ...
}

您也可以使用arg(3)作为用户对象 - &gt;使用%user而不是%,您将在回调中获得用户对象

$items['invites/auth/%/%user']

答案 1 :(得分:1)

我对文档的阅读是'page_arguments' => array(2)表示:“将路径组件号2作为页面回调的第一个参数传递,后跟任何可选参数”。所以你得到:RANDOMSTRINGRANDOMSTRINGUSERID

警告:我不是Drupal专家,以上可能是错误的。您可以通过提供invites_pageAuth其他参数,更改2中的page_arguments等来轻松查看。