Ubercart - войдите в систему на странице оформления заказа - PullRequest
0 голосов
/ 26 декабря 2011

Мне нужно, чтобы пользователи входили на страницу оформления заказа, не обновляя страницу.Я настраиваю панель входа в систему и с помощью ajax отправляю на сервер и аутентифицирую их.Но - после этого процесса входа в систему, когда пользователь заполняет оставшуюся форму оформления заказа, появляется ошибка:

Validation error, please try again. 
If this error persists, please contact the site administrator.

В противном случае, когда я вхожу в систему, а затем обновляю страницу и только затем отправляю форму извлечения- нет проблем.Я предполагаю, что при обновлении страницы ubercart делает некоторые вещи, которые мне не хватает, чтобы оформить заказ успешно, ... Что это за вещи?

РЕДАКТИРОВАТЬ: хорошо, так что я возился.обнаружил эти две функции:

uc_cart_checkout_form_validate

uc_cart_checkout_form_submit

Я провел несколько тестов и обнаружил, что _validate вызывается, но _submit не вызывается!Как это может быть?

РЕДАКТИРОВАТЬ2: хорошо, я обнаружил, что что-то устанавливает ошибку проверки, но я не могу понять, что.я полностью закомментировал весь код в uc_cart_checkout_form_validate и дважды проверил, что нет никаких других функций проверки, связанных с формами оформления заказа.

в начале uc_cart_checkout_form_validate Я проверяю переменные сеанса, и возникает ошибка.кто его там поставил ???

используя drupal 6, ubercart 2

1 Ответ

0 голосов
/ 27 декабря 2011

если кто-то получит ответ на этот вопрос и спросит, каков ответ, я получил его:

когда анонимный пользователь заполняет форму проверки, $ _REQUEST ['form_token'] не существует.для аутентифицированного пользователя - есть!

, так что в любом случае проблема заключалась в том, что, когда я вхожу в систему пользователя в форме проверки и пытаюсь отправить запрос - при создании формы токен формы отсутствует, но когда формаПользователь вошел в систему, поэтому drupal ищет токен формы и не может его найти.Вот почему форма не проверяется.

В любом случае, решение для меня было добавить это в _form_alter:

if ($form_id == 'uc_cart_checkout_form') {
    unset($form['#token']);        
}
...