Привет всем, помогите разобраться с одной ошибкой... В логе иногда наблюдаю: 2016-10-26 14:15:25 - PHP Notice: Undefined index: last_order_id in /home/.../www/vqmod/vqcache/vq2 system_modification_catalog_controller_common_header.php on line 226 Собственно сама конструкция условия выглядит в common/header.php таким образом: Код: if ($url_path == 'checkout/success') { // Complete Checkout $query = $this->db->query("SELECT product_id FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$_SESSION['last_order_id'] . "'"); $product_count = $query->num_rows; foreach($query->rows as $product) { $cart_products .= '\'' . $product['product_id'] . '\','; } Второй раз она появляться в файле catalog/model/checkout/order.php вот в таком виде: Код: $_SESSION['last_order_id'] = $order_id; Собственно вопрос, как правильно передать last_order_id или же можно передавать просто order_id? Или может проблема в конфликте vQmod с ocmod?
last_order_id - это значение $order_id, в момент когда заказ "подтверждаеться", тоесть при создании заказа есть 2 этапа: 0. createOrder - здесь вносяться все данные с базы с методами доставок, оплат, скидки, бонусы, акции, адреса... {промежуточный этап (регистрация, оплата черезе мерчант банка, добавление коментариев...)} 1. confirm - вот тут то заказ либо подтверждён и поступил в обработку для админки, редиректом пользователя на страницу success, с последующим обнулением переменной $order_id, что вам и рекомендую поставить в самомо начале функции индекс: или попадает в "пустышку", в админке они как "неудавшиеся" помечены, часто ответ на вопрос, почему нумерация заказов не по порядку, заключена из за этих пустышек, которые фактически не видимы в админке, так как не прошли функцию "подтверждения" соотв. и переменной last_order_id быть не может, но опенкарт так повязан, что страница успешности имеет несколько предпосылок на себя: успешная регистрация, подписка на новости, покупка, контактная форма... все они ведут на страницу "успешности" посему проверку типа if (isset надо ставить однозначно.
Все сделал как Вы подсказали, потестил вроде все работает, самому вызвать данную ошибку не получилось учитывая все вышеописанные манипуляции с заказом.... Внес правки на рабочий проект, понаблюдаю до завтра. Спасибо за детальный и развернутый ответ.
Помогите пожалуйста ещё разобрать один нюанс... Вот таким образом передается значения которое содержит в себе поисковый запрос: PHP: $options .= ', search_string: \'' . $this->request->get['search'] . '\''; и при такой конструкции все работает как нужно (если конечно есть запрос в строке)... но самое интересное то, что когда выполнить поиск без запроса (то есть передать пустую строку, а опенкарт при пустой строке по умолчанию перебрасывает на страницу поиска) я получаю обрыв соединения с сайтом... Как побороть данную проблему? Да использую переадресацию с стандартных url, отключал та же самая проблема.
я бы добавил проверку на параметр гет, и отдельно выделил переменную под это: Код: if (isset($this->request->get['search'])) { $search_data = $this->request->get['search']; } else { $search_data = ''; }