gregoro

Что может значить этот код ошибки?

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

gregoro    22

Добрый день!

 

В журнале ошибок периодически вот такая вот строчка вылезает:

PHP Notice:  Undefined variable: product_id in /home/servername/site.ru/system/storage/modification/catalog/controller/product/product.php on line 979

Вот кусок кода, в котором упомянутая строчка находится:

	public function getRecurringDescription() {
		$this->language->load('product/product');
		$this->load->model('catalog/product');

          $this->load->model('catalog/category');
          $data['catprod'] = array();
          
          $product_category = $this->model_catalog_product->getCategories($product_id);  ВОТ ЭТА ПОД номером 979
          
          foreach ($product_category as $prodcat) {
          
          $category_info = $this->model_catalog_category->getCategory($prodcat['category_id']);
          
          if ($category_info) {
          
          $data['catprod'][] = array(
          'name'     => $category_info['name'],
          'href'     => $this->url->link('product/category', 'path=' . $category_info['category_id'])
          );
          }
          }
			
			

Спасибо за помощь!

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


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

Правильно он пишет...

 

Доходит до 979 строчки...и смотрит, что в модель передается переменная $product_id

Но нигде нет, что это за переменная $product_id

 

Тоисть нужно определить какаой значение должно попадать в эту переменную, что б потом передавалось в модель.

Изменено пользователем Skunk
overquote deleted

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


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

Правильно он пишет...

 

Доходит до 979 строчки...и смотрит, что в модель передается переменная $product_id

Но нигде нет, что это за переменная $product_id

 

Тоисть нужно определить какаой значение должно попадать в эту переменную, что б потом передавалось в модель.

Спасибо вам за ответ!

 

Можно пару уточняющих вопросов? (если что, я не программист от слова совсем :-) )

 

1. как это влияет на работоспособность сайта? где можно ждать сбоев?

2. откуда эта ошибка могла взяться и насколько трудно ее устранить?

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


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

Спасибо вам за ответ!

 

Можно пару уточняющих вопросов? (если что, я не программист от слова совсем :-) )

 

1. как это влияет на работоспособность сайта? где можно ждать сбоев?

2. откуда эта ошибка могла взяться и насколько трудно ее устранить?

 

Нужно по рукам надавать тому, кто делал сайт)

if (isset($this->request->post['product_id'])) {
	$product_id = $this->request->post['product_id'];
} else {
	$product_id = 0;
}
Такая часть кода в этой строчке есть?
 
Если нет, добавить нужно и все должно решится...

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


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

А может автор этого кода просто забыл передать в функцию переменную $product_id ?

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


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

А может автор этого кода просто забыл передать в функцию переменную $product_id ?

Не думаю! Так как функция getRecurringDescription() стандартная...Если речь, конечно, идет о файле catalog\controller\product\product.php

Если у Ваш ошибка в каком-то другом файле, тогда нужно просто передать или определить product_id 

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


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

@Fedka,  да, вы правы. Я навскидку писала, в код не смотрела. Действительно, нужно всего лишь определить $product_id. Точнее вернуть обратно этот код, т.к. явно кто-то намерено или нет его удалил. В чистом ОС этот код присутствует.

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


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

Нужно по рукам надавать тому, кто делал сайт)

if (isset($this->request->post['product_id'])) {	$product_id = $this->request->post['product_id'];} else {	$product_id = 0;}
Такая часть кода в этой строчке есть?

Если нет, добавить нужно и все должно решится...

Такие строчки есть, но они располагаются ниже по коду...

Вот скопировал кусок, который Notepad++ подсветил как единый :-)

public function getRecurringDescription() {
		$this->language->load('product/product');
		$this->load->model('catalog/product');

          $this->load->model('catalog/category');
          $data['catprod'] = array();
          
          $product_category = $this->model_catalog_product->getCategories($product_id);
          
          foreach ($product_category as $prodcat) {
          
          $category_info = $this->model_catalog_category->getCategory($prodcat['category_id']);
          
          if ($category_info) {
          
          $data['catprod'][] = array(
          'name'     => $category_info['name'],
          'href'     => $this->url->link('product/category', 'path=' . $category_info['category_id'])
          );
          }
          }
			
			

		if (isset($this->request->post['product_id'])) {
			$product_id = $this->request->post['product_id'];
		} else {
			$product_id = 0;
		}

		if (isset($this->request->post['recurring_id'])) {
			$recurring_id = $this->request->post['recurring_id'];
		} else {
			$recurring_id = 0;
		}

		if (isset($this->request->post['quantity'])) {
			$quantity = $this->request->post['quantity'];
		} else {
			$quantity = 1;
		}

		$product_info = $this->model_catalog_product->getProduct($product_id);
		$recurring_info = $this->model_catalog_product->getProfile($product_id, $recurring_id);

		$json = array();

		if ($product_info && $recurring_info) {
			if (!$json) {
				$frequencies = array(
					'day'        => $this->language->get('text_day'),
					'week'       => $this->language->get('text_week'),
					'semi_month' => $this->language->get('text_semi_month'),
					'month'      => $this->language->get('text_month'),
					'year'       => $this->language->get('text_year'),
				);

				if ($recurring_info['trial_status'] == 1) {
					$price = $this->currency->format($this->tax->calculate($recurring_info['trial_price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax')));
					$trial_text = sprintf($this->language->get('text_trial_description'), $price, $recurring_info['trial_cycle'], $frequencies[$recurring_info['trial_frequency']], $recurring_info['trial_duration']) . ' ';
				} else {
					$trial_text = '';
				}

				$price = $this->currency->format($this->tax->calculate($recurring_info['price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax')));

				if ($recurring_info['duration']) {
					$text = $trial_text . sprintf($this->language->get('text_payment_description'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']);
				} else {
					$text = $trial_text . sprintf($this->language->get('text_payment_cancel'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']);
				}

				$json['success'] = $text;
			}
		}

		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));
	}
Изменено пользователем Skunk
[spoiler]

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


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

А это не может быть как-то связано с перелинковкой товаров? Со "связанными" товарами если быть точнее?

 

У меня там ошибка была (связи скидывались самопроизвольно), и мне программист один исправлял.

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


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

Такие строчки есть, но они располагаются ниже по коду...

Вот скопировал кусок, который Notepad++ подсветил как единый :-)

public function getRecurringDescription() {
		$this->language->load('product/product');
		$this->load->model('catalog/product');

          $this->load->model('catalog/category');
          $data['catprod'] = array();
          
          $product_category = $this->model_catalog_product->getCategories($product_id);
          
          foreach ($product_category as $prodcat) {
          
          $category_info = $this->model_catalog_category->getCategory($prodcat['category_id']);
          
          if ($category_info) {
          
          $data['catprod'][] = array(
          'name'     => $category_info['name'],
          'href'     => $this->url->link('product/category', 'path=' . $category_info['category_id'])
          );
          }
          }
			
			

		if (isset($this->request->post['product_id'])) {
			$product_id = $this->request->post['product_id'];
		} else {
			$product_id = 0;
		}

		if (isset($this->request->post['recurring_id'])) {
			$recurring_id = $this->request->post['recurring_id'];
		} else {
			$recurring_id = 0;
		}

		if (isset($this->request->post['quantity'])) {
			$quantity = $this->request->post['quantity'];
		} else {
			$quantity = 1;
		}

		$product_info = $this->model_catalog_product->getProduct($product_id);
		$recurring_info = $this->model_catalog_product->getProfile($product_id, $recurring_id);

		$json = array();

		if ($product_info && $recurring_info) {
			if (!$json) {
				$frequencies = array(
					'day'        => $this->language->get('text_day'),
					'week'       => $this->language->get('text_week'),
					'semi_month' => $this->language->get('text_semi_month'),
					'month'      => $this->language->get('text_month'),
					'year'       => $this->language->get('text_year'),
				);

				if ($recurring_info['trial_status'] == 1) {
					$price = $this->currency->format($this->tax->calculate($recurring_info['trial_price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax')));
					$trial_text = sprintf($this->language->get('text_trial_description'), $price, $recurring_info['trial_cycle'], $frequencies[$recurring_info['trial_frequency']], $recurring_info['trial_duration']) . ' ';
				} else {
					$trial_text = '';
				}

				$price = $this->currency->format($this->tax->calculate($recurring_info['price'] * $quantity, $product_info['tax_class_id'], $this->config->get('config_tax')));

				if ($recurring_info['duration']) {
					$text = $trial_text . sprintf($this->language->get('text_payment_description'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']);
				} else {
					$text = $trial_text . sprintf($this->language->get('text_payment_cancel'), $price, $recurring_info['cycle'], $frequencies[$recurring_info['frequency']], $recurring_info['duration']);
				}

				$json['success'] = $text;
			}
		}

		$this->response->addHeader('Content-Type: application/json');
		$this->response->setOutput(json_encode($json));
	}

 

 

 

Скорей всего прост оне туда вставили кусок кода и все...

 

Если "программер" какой-то делал, тогда у него спросите, зачем он порядок поменял в этой функции...

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


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

У меня похожая ошибка /system/storage/modification/catalog/controller/product/product.php on line 172

есть у кого возможность залить полный рабочий файл product.php? Заранее спасибо.))

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


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

"полный рабочий файл" есть в дистрибутиве вашей версии движка

 

но причину искать нужно не в нем, а в модификаторе который у вас его меняет

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


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

Господа, спасибо большое за ответы!

 

У меня все же нубский вопрос один остался :-)

 

А что конкретно может не работать, если эту ошибку не устранить?

Просто (тьфу-тьфу) заказ можно оформить, в этом плане ничего не глючит. Разве что притормаживает иногда (редко достаточно, при добавлении в корзину)

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


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

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

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

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

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

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

Войти

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

Войти


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

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