Перейти к содержимому


Фото
- - - - -

Как исправить эти ошибки после подключения модуля?


  • Чтобы отвечать, сперва войдите на форум
17 ответов в теме

#1 AFI

AFI
  • Пользователь
  • 87 сообщений
  • Дизайн, Пользователь
  • Откуда:Киев

Опубликовано 22.03.2016 - 22:29

Добрый день! пожалуйста помогите, после подключения модуля возникли вот такие ошибки.

 

Warning: Invalid argument supplied for foreach() inC:\Programming\OpenServer\domains\local\view\ProductView.phpon line54

Warning: Cannot modify header information - headers already sent by (output started at C:\Programming\OpenServer\domains\local\view\ProductView.php:54) inC:\Programming\OpenServer\domains\local\view\ProductView.phpon line198

Warning: Cannot modify header information - headers already sent by (output started at C:\Programming\OpenServer\domains\local\view\ProductView.php:54) inC:\Programming\OpenServer\domains\local\index.phpon line79
 
в файле ProductView.php
заменял строку 53
$product->features = $this->features->get_product_options(array('product_id'=>$product->id));

 

 
на
$temp_options = array();
            foreach($product->features as $option) {
               $temp_options[$option->feature_id]->feature_id = $option->feature_id;
               $temp_options[$option->feature_id]->name = $option->name;
               $temp_options[$option->feature_id]->values[] = $option->value;
            }

            foreach($temp_options as $id => $option)
               $temp_options[$id]->value = implode(', ', $temp_options[$id]->values);

            $product->features = $temp_options;
Сначала не было, но потом появилась данная проблема в админке

Warning: Creating default object from empty value in C:\Programming\OpenServer\domains\local\simpla\ProductsAdmin.php on line 250

 

Спасибо.

Изменено: AFI, 22.03.2016 - 22:41


#2 AFI

AFI
  • Пользователь
  • 87 сообщений
  • Дизайн, Пользователь
  • Откуда:Киев

Опубликовано 23.03.2016 - 02:24

1.foreach пофиксил


Изменено: AFI, 23.03.2016 - 02:27


#3 osben

osben
  • Фрилансер
  • 782 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:UA, RU

Опубликовано 23.03.2016 - 02:24


	$temp_options = array();
	foreach($this->features->get_product_options(array('product_id'=>$product->id)) as $option) {
                $temp_options[$option->feature_id] = new stdClass;
		$temp_options[$option->feature_id]->feature_id = $option->feature_id;
		$temp_options[$option->feature_id]->name = $option->name;
		$temp_options[$option->feature_id]->values[] = $option->value;
	}

	foreach($temp_options as $id => $option)
		$temp_options[$id]->value = implode(', ', $temp_options[$id]->values);

	$product->features = $temp_options;

Изменено: osben, 23.03.2016 - 02:25


#4 osben

osben
  • Фрилансер
  • 782 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:UA, RU

Опубликовано 23.03.2016 - 03:59

покажите содержимое ProductsAdmin.php on line 250



#5 AFI

AFI
  • Пользователь
  • 87 сообщений
  • Дизайн, Пользователь
  • Откуда:Киев

Опубликовано 23.03.2016 - 12:49

покажите содержимое ProductsAdmin.php on line 250

$query = $this->db->placehold("SELECT category_id FROM s_products_categories 
WHERE product_id = ? LIMIT 1", $product->id);
                $this->db->query($query);
                $cat_id->category_id = $this->db->result('category_id'); //строка 250 

Так же в админке на странице товара вылазит таже ошибка
 

if(is_array($options))
		{
   			$temp_options = array();
   			foreach($options as $option) {
       			$temp_options[$option->feature_id]->feature_id = $option->feature_id; //ссылается на эту строку
       			if(is_array($option->value))
           			$temp_options[$option->feature_id]->values = $option->value;
       			else
           			$temp_options[$option->feature_id]->values[] = $option->value;
   		}

   			$options = $temp_options;
		}


#6 AFI

AFI
  • Пользователь
  • 87 сообщений
  • Дизайн, Пользователь
  • Откуда:Киев

Опубликовано 23.03.2016 - 12:52


	$temp_options = array();
	foreach($this->features->get_product_options(array('product_id'=>$product->id)) as $option) {
                $temp_options[$option->feature_id] = new stdClass;
		$temp_options[$option->feature_id]->feature_id = $option->feature_id;
		$temp_options[$option->feature_id]->name = $option->name;
		$temp_options[$option->feature_id]->values[] = $option->value;
	}

	foreach($temp_options as $id => $option)
		$temp_options[$id]->value = implode(', ', $temp_options[$id]->values);

	$product->features = $temp_options;

Это модуль мультисвойств, после определения класа $temp_options[$option->feature_id] = new stdClass; ошибки устраняются, но доп. свойства не выводятся.



#7 osben

osben
  • Фрилансер
  • 782 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:UA, RU

Опубликовано 23.03.2016 - 12:55

$query = $this->db->placehold("SELECT category_id FROM s_products_categories 
WHERE product_id = ? LIMIT 1", $product->id);
                $this->db->query($query);
                $cat_id->category_id = $this->db->result('category_id'); //строка 250 

Так же в админке на странице товара вылазит таже ошибка
 

if(is_array($options))
		{
   			$temp_options = array();
   			foreach($options as $option) {
       			$temp_options[$option->feature_id]->feature_id = $option->feature_id; //ссылается на эту строку
       			if(is_array($option->value))
           			$temp_options[$option->feature_id]->values = $option->value;
       			else
           			$temp_options[$option->feature_id]->values[] = $option->value;
   		}

   			$options = $temp_options;
		}

перед $cat_id->category_id = $this->db->result('category_id'); //строка 250

 $cat_id = new stdClass;

 

	$temp_options = array();
	foreach($this->features->get_product_options(array('product_id'=>$product->id)) as $option) {
		if(empty($temp_options[$option->feature_id]))
		{
			$temp_options[$option->feature_id] = new stdClass;
			$temp_options[$option->feature_id]->feature_id = $option->feature_id;
			$temp_options[$option->feature_id]->name = $option->name;
			$temp_options[$option->feature_id]->values = array();
		}

		$temp_options[$option->feature_id]->values[] = $option->value;
	}

	foreach($temp_options as $id => $option)
		$temp_options[$id]->value = implode(', ', $temp_options[$id]->values);

	$product->features = $temp_options;

Изменено: osben, 23.03.2016 - 12:55


#8 AFI

AFI
  • Пользователь
  • 87 сообщений
  • Дизайн, Пользователь
  • Откуда:Киев

Опубликовано 23.03.2016 - 14:16

перед $cat_id->category_id = $this->db->result('category_id'); //строка 250

 $cat_id = new stdClass;

Ошибка на странице админки исчезла. 

 

	$temp_options = array();
	foreach($this->features->get_product_options(array('product_id'=>$product->id)) as $option) {
		if(empty($temp_options[$option->feature_id]))
		{
			$temp_options[$option->feature_id] = new stdClass;
			$temp_options[$option->feature_id]->feature_id = $option->feature_id;
			$temp_options[$option->feature_id]->name = $option->name;
			$temp_options[$option->feature_id]->values = array();
		}

		$temp_options[$option->feature_id]->values[] = $option->value;
	}

	foreach($temp_options as $id => $option)
		$temp_options[$id]->value = implode(', ', $temp_options[$id]->values);

	$product->features = $temp_options;

Код выше вставил в файл productView.php и  ошибки пропали, все заработало. Огромное спасибо!

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


Warning: Creating default object from empty value in C:\Programming\OpenServer\domains\local\simpla\ProductAdmin.php on line 372

if(is_array($options))
		{
   			$temp_options = array();
   			foreach($options as $option) {
       			$temp_options[$option->feature_id]->feature_id = $option->feature_id; // 372 строка
       			if(is_array($option->value))
           			$temp_options[$option->feature_id]->values = $option->value;
       			else
           			$temp_options[$option->feature_id]->values[] = $option->value;
   		}

   			$options = $temp_options;
		}

Я добавлял строку $temp_options[$option->feature_id] = new stdClass;, но после этого в админке на странице товара  пропадали мультисвойства. Это критическое предупреждение, его  нужно фиксить или можно просто скрыть?


Изменено: AFI, 23.03.2016 - 14:17


#9 osben

osben
  • Фрилансер
  • 782 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:UA, RU

Опубликовано 23.03.2016 - 14:19

if(is_array($options))
{
	$temp_options = array();
	foreach($options as $option) {
		if(empty($temp_options[$option->feature_id]))
			$temp_options[$option->feature_id] = new stdClass;

		$temp_options[$option->feature_id]->feature_id = $option->feature_id;
		if(is_array($option->value))
			$temp_options[$option->feature_id]->values = $option->value;
		else
			$temp_options[$option->feature_id]->values[] = $option->value;
	}

	$options = $temp_options;
}


#10 AFI

AFI
  • Пользователь
  • 87 сообщений
  • Дизайн, Пользователь
  • Откуда:Киев

Опубликовано 23.03.2016 - 14:49

if(is_array($options))
{
	$temp_options = array();
	foreach($options as $option) {
		if(empty($temp_options[$option->feature_id]))
			$temp_options[$option->feature_id] = new stdClass;

		$temp_options[$option->feature_id]->feature_id = $option->feature_id;
		if(is_array($option->value))
			$temp_options[$option->feature_id]->values = $option->value;
		else
			$temp_options[$option->feature_id]->values[] = $option->value;
	}

	$options = $temp_options;
}

Еще раз, Спасибо вам огромное. Все работает.



#11 aroman80

aroman80
  • Пользователь
  • 30 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Марс

Опубликовано 29.01.2018 - 21:18

у меня без 

 

$temp_options[$option->feature_id] = new stdClass; 

 

всё работает.

Что я не так делаю?



#12 mishanya

mishanya
  • Фрилансер
  • 2 490 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 29.01.2018 - 21:37

у меня без 

 

$temp_options[$option->feature_id] = new stdClass; 

 

всё работает.

Что я не так делаю?

 

скорее всего у вас старая версия php просто. там этого не надо было



#13 aroman80

aroman80
  • Пользователь
  • 30 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Марс

Опубликовано 29.01.2018 - 23:18

скорее всего у вас старая версия php просто. там этого не надо было

версия 2.3.8



#14 Kosjak76

Kosjak76
  • Модератор
  • 3 672 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 29.01.2018 - 23:27

Вы читать умеете??

Какое отношение имеет версия Симплы к версии PHP на сервере?



#15 aroman80

aroman80
  • Пользователь
  • 30 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Марс

Опубликовано 01.02.2018 - 20:34

Вы читать умеете??

Какое отношение имеет версия Симплы к версии PHP на сервере?

спасибо, что обратили внимание, реально про php шла речь))

PHP 5.4 у меня



#16 aroman80

aroman80
  • Пользователь
  • 30 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Марс

Опубликовано 07.02.2018 - 03:46

добавляю 

$temp_options[$option->feature_id] = new stdClass;

не работает



#17 mishanya

mishanya
  • Фрилансер
  • 2 490 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 08.02.2018 - 11:28

добавляю 

$temp_options[$option->feature_id] = new stdClass;

не работает

 

я написал что для php5.4 вам не нужно это добавлять. если у вас все работает как вы выше написали. зачем вы себе придумываете?



#18 aroman80

aroman80
  • Пользователь
  • 30 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Марс

Опубликовано 08.02.2018 - 13:15

я написал что для php5.4 вам не нужно это добавлять. если у вас все работает как вы выше написали. зачем вы себе придумываете?

прогресс не стоит на месте, когда то нужно же будет переходить на php 7






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых