Передача значений в функции через URI (вместо метода GET) - PullRequest
1 голос
/ 19 марта 2011

Я пишу модуль Drupal 6, который отправляет идентификатор пользователя + случайно сгенерированную строку в функцию через URI. Я использую хук меню:

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");
}

Я использую URL-адрес «invites / auth / RANDOMSTRING / USERID». Это, кажется, получает первое значение дважды; $ auth и $ uid содержат 'RANDOMSTRING'.

Я что-то упускаю очень просто?
Спасибо.

Ответы [ 2 ]

4 голосов
/ 19 марта 2011
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) как пользовательский объект -> использовать% user вместо%, и вы получите пользовательский объект в вашем обратном вызове

$items['invites/auth/%/%user']
1 голос
/ 19 марта 2011

Мое чтение документов состоит в том, что 'page_arguments' => array(2) означает: «передать компоненту пути номер 2 в качестве первого аргумента обратного вызова страницы, за которым следуют любые необязательные аргументы».Таким образом, вы получите: RANDOMSTRING, RANDOMSTRING, USERID.

Предупреждение: я не эксперт по Drupal, и приведенное выше может быть ошибочным.Вы можете проверить это достаточно легко, задав invites_pageAuth другой аргумент, изменив 2 в вашем page_arguments и т. Д.

...