Jump to content
Sign in to follow this  
devel

Missing argument 4 for Cart::add() | Undefined variable: profile_id

Recommended Posts

При попытке добавить в существующи заказ еще товары (менеджером, в админке), вылетает ошибка SyntaxError: Unexpected tocken. В логах вот что:

2013-11-04 14:10:43 - PHP Warning: Missing argument 4 for Cart::add(), called in www\catalog\controller\checkout\manual.php on line 74 and defined in www\system\library\cart.php on line 318
2013-11-04 14:10:43 - PHP Notice: Undefined variable: profile_id in www\system\library\cart.php on line 327

Решение найдено на форуме разработчика, как "предположительно  работающее". Я проверил - работает. Решение: замена в /system/library/cart.php



public function add($product_id, $qty = 1, $option, $profile_id) {

на:



public function add($product_id, $qty = 1, $option, $profile_id = '') { 

Opencart 1.5.6, Default Theme.

  • +1 1

Share this post


Link to post
Share on other sites

У меня пока не решилось. После замены ошибка осталась

SyntaxError.jpg

post-674130-0-76127900-1383772046_thumb.jpg

Share this post


Link to post
Share on other sites

А что в логе у вас? Я заметил, что строка другая в warning-е у вас.

Share this post


Link to post
Share on other sites

Подскажите как посмотреть лог. Сразу покажу что там:)

Share this post


Link to post
Share on other sites

Нашел Журнал ошибок, сейчас там:

2013-11-07 1:50:52 - PHP Warning:  json_encode() [<a href='function.json-encode'>function.json-encode</a>]: Invalid UTF-8 sequence in argument in /***/catalog/controller/checkout/manual.php on line 581

 

Строка 581 (manual.php):

$this->response->setOutput(json_encode($json));

 

При повторном действии (добавление товара в заказ) возникает эта же ошибка

Edited by RHCk

Share this post


Link to post
Share on other sites

Вы в каком редакторе работаете? Похоже, у вас с кодировкой где-то косяк, т.к. в 581 строке:

$this->response->setOutput(json_encode($json));	

Если правили www\catalog\controller\checkout\manual.php, то попробуйте сохранить его в UTF-8 без BOM (например в Notepad++)

Share this post


Link to post
Share on other sites

Желательно все что вы правите так сохранять. Я так понимаю, вы шаблон карточки товара тоже правили?

Share this post


Link to post
Share on other sites

Пользуюсь Notepad++, сохраняю в этой кодировке, manual.php не трогал. Менял только то, что с НДС связано, может если только там где-то пропустил смену кодировки. Думаете есть вероятность, что из-за этого такой результат?

Share this post


Link to post
Share on other sites
Думаете есть вероятность, что из-за этого такой результат?

Все может быть. Самая простейшая и малоочевидная опечатка может отнять уйму времени...

 

 

На чистом opencart 1.5.6 ошибка другая:

SyntaxError: JSON.parse: unexpected characterOK<b>Warning</b>: Missing argument 4 for Cart::add(), called in V:\home\clear-oc.test\www\catalog\controller\checkout\manual.php on line 74 and defined in <b>V:\home\clear-oc.test\www\system\library\cart.php</b> on line <b>318</b><b>Notice</b>: Undefined variable: profile_id in <b>V:\home\clear-oc.test\www\system\library\cart.php</b> on line <b>327</b><b>Warning</b>: Missing argument 4 for Cart::add(), called in V:\home\clear-oc.test\www\catalog\controller\checkout\manual.php on line 104 and defined in <b>V:\home\clear-oc.test\www\system\library\cart.php</b> on line <b>318</b><b>Notice</b>: Undefined variable: profile_id in <b>V:\home\clear-oc.test\www\system\library\cart.php</b> on line <b>327</b>{"order_product":[{"product_id":"41","name":"iMac","model":"Product 14","option":[],"download":[],"quantity":1,"stock":true,"price":100,"total":100,"tax":0,"reward":0},{"product_id":"29","name":"Palm Treo Pro","model":"Product 2","option":[],"download":[],"quantity":1,"stock":true,"price":279.99,"total":279.99,"tax":0,"reward":0}],"order_voucher":[],"shipping_method":{"flat":{"title":"Flat Rate","quote":{"flat":{"code":"flat.flat","title":"Flat Shipping Rate","cost":"5.00","tax_class_id":"9","text":"$5.00"}},"sort_order":"1","error":false}},"order_total":[{"code":"sub_total","title":"Sub-Total","text":"$379.99","value":379.99,"sort_order":"1"},{"code":"shipping","title":"Flat Shipping Rate","text":"$5.00","value":"5.00","sort_order":"3"},{"code":"total","title":"Total","text":"$384.99","value":384.99,"sort_order":"9"}],"payment_methods":[],"payment_method":{"cod":{"code":"cod","title":"Cash On Delivery","sort_order":"5"}},"success":"Order totals has been successfully re-calculated!"}

Share this post


Link to post
Share on other sites

То что касается НДС переделаю заново, с контролем смены кодировки.

 

Ошибка в моем случае, это ошибка после замены, описанной в первом сообщении

 

07.11.2013 13:40

Кодировки проверил, архив в теме перезалил. Результат с редактированием заказа тот же, точнее текст ошибок меняется, но ошибка присутствует.

 

На форуме разработчиков, немного ниже предложенного решения, предлагается воздержаться от попыток построить рабочий магазин на 1.5.6

 

Текст ошибок до замены:

PHP Warning:  Missing argument 4 for Cart::add(), called in /***/catalog/controller/checkout/manual.php on line 74 and defined in /***/system/library/cart.php on line 318
PHP Notice:  Undefined variable: profile_id in /***/system/library/cart.php on line 327
PHP Warning:  Missing argument 4 for Cart::add(), called in /***/catalog/controller/checkout/manual.php on line 104 and defined in /***/system/library/cart.php on line 318
PHP Notice:  Undefined variable: profile_id in /***/system/library/cart.php on line 327
PHP Warning:  json_encode() [<a href='function.json-encode'>function.json-encode</a>]: Invalid UTF-8 sequence in argument in /***/catalog/controller/checkout/manual.php on line 581
 
Текст ошибки после замены:
PHP Warning:  json_encode() [<a href='function.json-encode'>function.json-encode</a>]: Invalid UTF-8 sequence in argument in /***/catalog/controller/checkout/manual.php on line 581
 
Прогресс заметен. Может это как-то связано с локализацией?
Edited by RHCk

Share this post


Link to post
Share on other sites
Ошибка в моем случае, это ошибка после замены, описанной в первом сообщении

Попробуйте на денвер в другую папку  поставить чистый opencart 1.5.6 и выполнить действия из первого сообщения.

Выложите логи до замены и после (на чистом oc).

 

У вас в последнем сообщении видно из лога, что решение из первого поста работает, т.к в логе три варнинга до замены, и один - после замены. Вот этот "один" вызван чем то другим..  

Share this post


Link to post
Share on other sites

Установил чистый Opencart v1.5.6, без локализации, оформил заказ, при попытке внести в заказ изменения в Журнале ошибок следующее:

 

PHP Warning:  Missing argument 4 for Cart::add(), called in /***/catalog/controller/checkout/manual.php on line 74 and defined in /home/c/cl89890/opencart.bvp/public_html/system/library/cart.php on line 318
PHP Notice:  Undefined variable: profile_id in /***/system/library/cart.php on line 327
PHP Warning:  Missing argument 4 for Cart::add(), called in /***/catalog/controller/checkout/manual.php on line 104 and defined in /home/c/cl89890/opencart.bvp/public_html/system/library/cart.php on line 318
PHP Notice:  Undefined variable: profile_id in /***/system/library/cart.php on line 327
 
После замены из первого сообщения ошибка не появляется, товар корректно добавляется в заказ.
 
07.11.2013 14:25
Откатываю изменения назад (меняю /system/library/cart.php на тот, который в дистрибутиве). Устанавливаю локализацию
 
Пробую изменить заказ, получаю:
 
PHP Warning:  Missing argument 4 for Cart::add(), called in /***/catalog/controller/checkout/manual.php on line 74 and defined in /***/system/library/cart.php on line 318
PHP Notice:  Undefined variable: profile_id in /***/system/library/cart.php on line 327
PHP Warning:  Missing argument 4 for Cart::add(), called in /***/catalog/controller/checkout/manual.php on line 74 and defined in /***/system/library/cart.php on line 318
PHP Notice:  Undefined variable: profile_id in /***/system/library/cart.php on line 327
PHP Warning:  Missing argument 4 for Cart::add(), called in /***/catalog/controller/checkout/manual.php on line 74 and defined in /***/system/library/cart.php on line 318
PHP Notice:  Undefined variable: profile_id in /***/system/library/cart.php on line 327
PHP Warning:  Missing argument 4 for Cart::add(), called in /***/catalog/controller/checkout/manual.php on line 74 and defined in /***/system/library/cart.php on line 318
PHP Notice:  Undefined variable: profile_id in /***/system/library/cart.php on line 327
PHP Warning:  Missing argument 4 for Cart::add(), called in ***/catalog/controller/checkout/manual.php on line 104 and defined in /***/system/library/cart.php on line 318
PHP Notice:  Undefined variable: profile_id in /***/system/library/cart.php on line 327
 
07.11.2013 14:35
Делаю изменения из первого сообщения, ошибки не появляются.
 
07.11.2013 14:40
Добавляю валюту рубль, устанавливаю её по умолчанию. Делаю заказ (два заказа - имя покупателя и адрес в одном латиница, во втором кириллица), пытаюсь его изменить - получаю:
 
PHP Warning:  json_encode() [<a href='function.json-encode'>function.json-encode</a>]: Invalid UTF-8 sequence in argument in /***/catalog/controller/checkout/manual.php on line 581

post-674130-0-00303600-1383821105_thumb.jpg

Share this post


Link to post
Share on other sites
товар корректно добавляется в заказ.

Что и требовалось доказать ;)

Share this post


Link to post
Share on other sites

Вопрос - в чем ошибка?:)

Share this post


Link to post
Share on other sites
Откатываю изменения назад (меняю /system/library/cart.php на тот, который в дистрибутиве).

А зачем выего меняли и на что? 

Invalid UTF-8 sequence in argument

Старый баг, судя по всему. Вот аж когда обсуждалось.

Навскидку сказать не могу ничего, opencart знаю мало. Очевидно, дело в кодировках. В идеале - везде utf-8 без BOM

Share this post


Link to post
Share on other sites

 

 

А зачем выего меняли и на что? 

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

 

Нашел вот ещё - тыц и тыц

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Ближе к вечеру обязательно попробую, ещё есть желание попытаться НДС настроить в ocStore 1.5.5.1.1.

Share this post


Link to post
Share on other sites

RHCk, чем закончилась история с 





PHP Warning:  json_encode() [<a href='function.json-encode'>function.json-encode</a>]: Invalid UTF-8 sequence in argument in /***/catalog/controller/checkout/manual.php on line 581

??

Поиском нашел еще вариант - длина имени в кириллице. Попробуйте товар с 5-10 символами с латинскими буквами и товар с 5-10 сиволами в кириллице. К сожалению, я принять участия в таком эксперименте не могу, т.к. данная ошибка у меня не возникает. Возможно, пока. Тем не менее, если вы решили проблему - поделитесь рецептом. Вам будут благодарны те, кто идет за вами по вашим "граблям" )

Share this post


Link to post
Share on other sites

Отвлекла командировка. Завтра начну пробовать:)

Share this post


Link to post
Share on other sites

При попытке добавить в существующи заказ еще товары (менеджером, в админке), вылетает ошибка SyntaxError: Unexpected tocken. В логах вот что:

2013-11-04 14:10:43 - PHP Warning: Missing argument 4 for Cart::add(), called in www\catalog\controller\checkout\manual.php on line 74 and defined in www\system\library\cart.php on line 318

2013-11-04 14:10:43 - PHP Notice: Undefined variable: profile_id in www\system\library\cart.php on line 327

Решение найдено на форуме разработчика, как "предположительно  работающее". Я проверил - работает. Решение: замена в /system/library/cart.php



public function add($product_id, $qty = 1, $option, $profile_id) {

на:



public function add($product_id, $qty = 1, $option, $profile_id = '') { 

Opencart 1.5.6, Default Theme.

 У меня была ошибка с заказом - не добавлялся товар в корзину - пока на модуль в хедере не нажмёшь, и не было всплывающего окна при заказе. Сделал вашу замену - зарабтало)

Share this post


Link to post
Share on other sites

RHCk, чем закончилась история с 





PHP Warning:  json_encode() [<a href='function.json-encode'>function.json-encode</a>]: Invalid UTF-8 sequence in argument in /***/catalog/controller/checkout/manual.php on line 581

??

Поиском нашел еще вариант - длина имени в кириллице. Попробуйте товар с 5-10 символами с латинскими буквами и товар с 5-10 сиволами в кириллице. К сожалению, я принять участия в таком эксперименте не могу, т.к. данная ошибка у меня не возникает. Возможно, пока. Тем не менее, если вы решили проблему - поделитесь рецептом. Вам будут благодарны те, кто идет за вами по вашим "граблям" )

Исходный файл русификации /russian/checout/manual.php в кодировке Windows-1251. Необходимо сохранить его в кодировке UTF-8. После этого всё работает. Прикладываю переконвертированную папку russian и отдельно данный файл.

russian.zip

manual.php

Share this post


Link to post
Share on other sites

alex79 - Огромный респект! Я уж не знал на что думать! Поменял кодировку и все супер!

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.