Добавление товаров в корзину по URL дает 404 при первом доступе и работает на 2-ом - PullRequest
0 голосов
/ 14 мая 2019

Я следовал этому примеру magento: строка запроса URL для добавления товара и применения купона на скидку в корзину , чтобы добавить товары в корзину и применить скидки одновременно, используя 1 запрос.

Он работает нормально, за исключением первого запроса (например, в режиме инкогнито), поскольку он выдаст 404 не найден, а затем, если я обновлю URL снова, он будет работать нормально.

URL выглядит следующим образом

https://www.website.com/checkout/cart/add/?product=10&qty=1&return_url=https://www.website.com/index.php/checkout/cart/couponPost/?coupon_code=discount

Я считаю, что это происходит из-за того, что сеанс не инициализируется в момент запроса, поэтому я попытался добавитьредирект в коде, но он не работает, и это не кажется самой яркой идеей.

Это код, который добавляет функцию корзины

require_once 'Mage/Checkout/controllers/CartController.php';

    class Namespace_AddProductFromUrl_Checkout_CartController extends Mage_Checkout_CartController {
        # overloaded addAction
        public function addAction()
        {        
            // generate form_key if missing or invalid
            if ( ! ($formKey = $this->getRequest()->getParam('form_key', null)) or $formKey != Mage::getSingleton('core/session')->getFormKey())
            {
                $this->getRequest()->setParams(array('form_key' => Mage::getSingleton('core/session')->getFormKey()));
            }        

            // do parent actions
            parent::addAction();
        }
    }

До сих пор я пытался добавить перенаправление в главную, если:

$this->getRequest()->setParams(array('form_key' => Mage::getSingleton('core/session')->getFormKey()));
$this->_redirect($this->getRequest()->getRequestUri());

1 Ответ

0 голосов
/ 14 мая 2019

Я нашел исправление для этого, но пока оно только частично.

Проблема перенаправления возникает при проверке файлов cookie, поэтому перейдите на Конфигурация> Общие> Веб> Обнаружение возможностей браузера> Перенаправить на страницу CMS, если файлы cookie отключены установлено на нет перебрал бы первую часть.

Я также попытался повторить это на новой системе, чтобы убедиться, что это не из-за какого-то конфликта, и кажется, что объявление модуля для M 1.9.4.1 не работает.

Я вижу это в Config> Advanced> Advanced , но это не меняет функцию addAction ().

Поэтому я отредактировал CartController.php в строке 209 в app / code / core / Mage / Checkout / controllers / и добавил этоpart:

if ( ! ($formKey = $this->getRequest()->getParam('form_key', null)) or $formKey != Mage::getSingleton('core/session')->getFormKey())
            {
                $this->getRequest()->setParams(array('form_key' => Mage::getSingleton('core/session')->getFormKey()));
            } 

Теперь все работает правильно.

Осталось сделать либо копию этого в папке сообщества, либо соответствующее объявление модуля.

...