Перейти к содержанию
devel

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

Рекомендуемые сообщения

При попытке добавить в существующи заказ еще товары (менеджером, в админке), вылетает ошибка 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

SyntaxError.jpg

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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));

 

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

Изменено пользователем RHCk

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Думаете есть вероятность, что из-за этого такой результат?

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

 

 

На чистом 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!"}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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
 
Прогресс заметен. Может это как-то связано с локализацией?
Изменено пользователем RHCk

Поделиться сообщением


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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Установил чистый 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
товар корректно добавляется в заказ.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Откатываю изменения назад (меняю /system/library/cart.php на тот, который в дистрибутиве).

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

Invalid UTF-8 sequence in argument

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

 

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 сиволами в кириллице. К сожалению, я принять участия в таком эксперименте не могу, т.к. данная ошибка у меня не возникает. Возможно, пока. Тем не менее, если вы решили проблему - поделитесь рецептом. Вам будут благодарны те, кто идет за вами по вашим "граблям" )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При попытке добавить в существующи заказ еще товары (менеджером, в админке), вылетает ошибка 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.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.