Jump to content
Sign in to follow this  
Dimyan

[Решено] Ссылка из письма заказа ведет не туда если пользователь logout

Recommended Posts

Здравствуйте!

Прошу прощения если тема уже поднималась, но я не смог найти.

Ситуация такая:

После оформления заказа приходит письмо с деталями заказа:

Для просмотра Вашего заказа перейдите по ссылке: http:// shop-url/index.php?route=account/order/info&order_id=4

Если по ней перейти когда клиент авторизован на сайте, то все нормально, переход осуществляется в историю заказа.

А вот если клиент не авторизован, то появляется форма login и после того как залогинешся, переход осуществляется в корзину куда автоматически добовляются все товары которые были в заказе указанном как параметр в предедущей ссылке.

Подскажите пожалуйста, что это за ерунда и как избавится, нахрапом роутинг opencarta понять у меня не получилось.

Share this post


Link to post
Share on other sites

Дело в том, что в контроллере, отвечающем за просмотр заказа (account/order/info), для незалогиненного пользователя в сессии сохраняется неверная ссылка для редиректа после входа:

if (!$this->customer->isLogged()) {
   $this->session->data['redirect'] = $this->url->link('account/order', 'order_id=' . $order_id, 'SSL');
  // После входа пользователь автоматически проследует по этой ссылке
   $this->redirect($this->url->link('account/login', '', 'SSL'));
	 }
Но дело в том, что это другой метод данного контроллера (account/order/index), который отвечает за повтор заказа, причем данному методу передается номер заказа, который пользователь изначально хотел просмотреть по ссылке из письма, т.е. все товары из данного заказа попадут в корзину и пользователь будет перенаправлен на корзину/оформление заказа.

Исправляется это корректировкой ссылки для редиректа после входа, то есть в методе account/order/info нужно найти формирование ссылки

$this->session->data['redirect'] = $this->url->link('account/order', 'order_id=' . $order_id, 'SSL');
и заменить ее на правильную

$this->session->data['redirect'] = $this->url->link('account/order/info', 'order_id=' . $order_id, 'SSL');
Данный баг обнаружил только в 1.5.3 (дефолтном и ocstore)
  • +1 5

Share this post


Link to post
Share on other sites

deeman, большое спасибо!

Подозреваю разработчики просто забыли дописать /info :)

Share this post


Link to post
Share on other sites

Спасибо deeman. А то некоторые мои клиенты видимо по этой причине и косячили с заказами. Вместо того, чтобы зайти свой заказ просмотреть, начинали точно такой же оформлять, или жаловались, почему как ни зайдут по ссылке из письма, так в корзине все удваивается и удваивается.

Share this post


Link to post
Share on other sites

deeman, огромное спасибо. Очень долго пытался отловить этот баг!!!

Share this post


Link to post
Share on other sites

Не вдуплюсь))). Это нужно менять в public function info() или в public function index() или в двух местах?

Share this post


Link to post
Share on other sites

Не вдуплюсь))). Это нужно менять в public function info() или в public function index() или в двух местах?

public function info()
  • +1 1

Share this post


Link to post
Share on other sites

спасибо. Так и сделал, а потом закрались сомнения))))

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.