hook_user не вызывается для операции входа в систему - PullRequest
3 голосов
/ 17 апреля 2010

В документации на drupal я прочитал, что hook_user должен вызываться для операции входа в систему. Чтобы проверить это, я добавил вызов drupal_set_message в верхней части моей реализации ловушек модулей, и единственное сообщение, которое я получаю, это вызов с 'load' в качестве $ op.

Я подтвердил, что drupal_set_message можно вызывать несколько раз, и это не стирает предыдущее сообщение, поэтому я уверен, что hook_user вызывается только один раз.

Есть ли веские причины того, почему hook_user не вызывается с 'login' как операция, когда я вхожу в систему?

Версия Drupal - 6, и мой модуль называется "favequest_fabilities", его реализация hook_user (для целей тестирования):

function favequest_favorites_user($op, &$edit, &$user, $caterogy=NULL) {
  drupal_set_message($op);
}

Ответы [ 3 ]

2 голосов
/ 17 апреля 2010

Как это часто бывает, я проследил это до взаимодействия модулей.

Не используйте модуль «Login Destination» , если вы планируете использовать hook_user в своих модулях.

Он выручает до того, как все другие модули могут иметь шанс на выполнение.

1 голос
/ 17 апреля 2010

У вас есть опечатка с написанием переменной "$ caterogy", но это не должно иметь значения, поскольку вы не используете ее в этом тесте:

function favequest_favorites_user($op, &$edit, &$user, $caterogy=NULL) {

Используя ваш код, я получаю четыре сообщения при входе в систему:

  • нагрузки
  • нагрузки
  • Войти
  • нагрузки

Как насчет того, чтобы редактировать учетную запись пользователя? Получаете ли вы $ view на странице «Моя учетная запись» и «форму» $ op при редактировании?

Интересно, что я не получаю "logout" $ op при выходе из системы - я предполагаю, что это как-то связано с перенаправлением, как только я перестаю быть аутентифицированным.

0 голосов
/ 11 июля 2010

Проверьте, есть ли у вас drupal_goto после входа в систему. http://drupal.org/node/228688

О drupal_set_message - сообщения сохраняются в сеансе. Когда вы входите в систему, сеанс сбрасывается, и это может быть причиной того, что вы их не видите. Для быстрой отладки я рекомендую использовать модуль devel с функцией dd или сообщения системного журнала.

Adi

...