Magento: не могу добавить товар в корзину после заказа - PullRequest
8 голосов
/ 03 декабря 2011

После оформления заказа невозможно добавить товар в корзину. Magento постоянно говорит мне: не могу добавить товар в корзину.

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

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1";i:1;s:2954:"#0 C:\wamp\www\ronamagento\trunk\lib\Zend\Db\Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)

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

Есть идеи?

---------------------- РЕДАКТИРОВАТЬ ------------------------ -

Кажется, что ошибки происходят из sales / order / controllers / OrderController.php, в функции переупорядочения в $ cart-> save ();
И тот же код в Checkout / controllers / CartController.php в функции добавления
Похоже, мой объект корзины поврежден или что-то в этом роде.

---------------------- РЕДАКТИРОВАТЬ ------------------- -------

---------------------- РЕДАКТИРОВАТЬ # 2 ---------------------- ----

Хорошо, если я прокомментирую строку $ this-> getQuote () -> collectTotals (); в функции сохранения Checkout / model / cart.php он работает, но не показывает, что товар был добавлен в мою корзину. Затем я вернул строку кода, и все работает нормально. Похоже, что-то не так в collectTotals () ...

---------------------- РЕДАКТИРОВАТЬ # 2 ----------------- ---------

Спасибо!

1 Ответ

0 голосов
/ 16 июня 2015

Скорее всего, это проблема, вызванная сторонним модулем, возможно, переписывающим модель Magento или предоставляющим прослушиватель событий (мое предположение) с некоторыми неэкранированными (возможно, прямыми, не использующими инфраструктуру Magento ORM) SQL-запросами в нем.

В качестве быстрой отладки я бы посоветовал вам попробовать отключить (не через Admin, это не сработает, поскольку отключает рендеринг, не переписывает или не прослушивает события, а переименовывает приложение / etc стороннего модуля)./modules/[Module_Name].xml "файл в нечто вроде" app / etc / modules / [Module_Name] .xml.disabled ", поэтому Magento игнорирует это) каждый из сторонних модулей, которые у вас есть - один за другим - до тех пор, пока вы не сможете разместитьприказ.

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

Вы также можете попробовать правильную отладку с помощью xdebug, и я бы настоятельно не рекомендовал выполнять любое из этих действий в производственной среде, так как это может привести к сбоям.

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

...