AFI Опубликовано 22 марта, 2016 Жалоба Поделиться Опубликовано 22 марта, 2016 (изменено) Добрый день! пожалуйста помогите, после подключения модуля возникли вот такие ошибки. Warning: Invalid argument supplied for foreach() inC:\Programming\OpenServer\domains\local\view\ProductView.phpon line54Warning: 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 line198Warning: 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 Спасибо. Изменено 22 марта, 2016 пользователем AFI Цитата Ссылка на сообщение Поделиться на другие сайты
AFI Опубликовано 22 марта, 2016 Автор Жалоба Поделиться Опубликовано 22 марта, 2016 (изменено) 1.foreach пофиксил Изменено 22 марта, 2016 пользователем AFI Цитата Ссылка на сообщение Поделиться на другие сайты
osben Опубликовано 22 марта, 2016 Жалоба Поделиться Опубликовано 22 марта, 2016 (изменено) $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; Изменено 22 марта, 2016 пользователем osben Цитата Ссылка на сообщение Поделиться на другие сайты
osben Опубликовано 23 марта, 2016 Жалоба Поделиться Опубликовано 23 марта, 2016 покажите содержимое ProductsAdmin.php on line 250 Цитата Ссылка на сообщение Поделиться на другие сайты
AFI Опубликовано 23 марта, 2016 Автор Жалоба Поделиться Опубликовано 23 марта, 2016 покажите содержимое 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; } Цитата Ссылка на сообщение Поделиться на другие сайты
AFI Опубликовано 23 марта, 2016 Автор Жалоба Поделиться Опубликовано 23 марта, 2016 $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; ошибки устраняются, но доп. свойства не выводятся. Цитата Ссылка на сообщение Поделиться на другие сайты
osben Опубликовано 23 марта, 2016 Жалоба Поделиться Опубликовано 23 марта, 2016 (изменено) $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; Изменено 23 марта, 2016 пользователем osben Цитата Ссылка на сообщение Поделиться на другие сайты
AFI Опубликовано 23 марта, 2016 Автор Жалоба Поделиться Опубликовано 23 марта, 2016 (изменено) перед $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;, но после этого в админке на странице товара пропадали мультисвойства. Это критическое предупреждение, его нужно фиксить или можно просто скрыть? Изменено 23 марта, 2016 пользователем AFI Цитата Ссылка на сообщение Поделиться на другие сайты
osben Опубликовано 23 марта, 2016 Жалоба Поделиться Опубликовано 23 марта, 2016 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; } Цитата Ссылка на сообщение Поделиться на другие сайты
AFI Опубликовано 23 марта, 2016 Автор Жалоба Поделиться Опубликовано 23 марта, 2016 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; } Еще раз, Спасибо вам огромное. Все работает. Цитата Ссылка на сообщение Поделиться на другие сайты
aroman80 Опубликовано 29 января, 2018 Жалоба Поделиться Опубликовано 29 января, 2018 у меня без $temp_options[$option->feature_id] = new stdClass; всё работает.Что я не так делаю? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 29 января, 2018 Жалоба Поделиться Опубликовано 29 января, 2018 у меня без $temp_options[$option->feature_id] = new stdClass; всё работает.Что я не так делаю? скорее всего у вас старая версия php просто. там этого не надо было Цитата Ссылка на сообщение Поделиться на другие сайты
aroman80 Опубликовано 29 января, 2018 Жалоба Поделиться Опубликовано 29 января, 2018 скорее всего у вас старая версия php просто. там этого не надо быловерсия 2.3.8 Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 29 января, 2018 Жалоба Поделиться Опубликовано 29 января, 2018 Вы читать умеете??Какое отношение имеет версия Симплы к версии PHP на сервере? Цитата Ссылка на сообщение Поделиться на другие сайты
aroman80 Опубликовано 1 февраля, 2018 Жалоба Поделиться Опубликовано 1 февраля, 2018 Вы читать умеете??Какое отношение имеет версия Симплы к версии PHP на сервере?спасибо, что обратили внимание, реально про php шла речь))PHP 5.4 у меня Цитата Ссылка на сообщение Поделиться на другие сайты
aroman80 Опубликовано 7 февраля, 2018 Жалоба Поделиться Опубликовано 7 февраля, 2018 добавляю $temp_options[$option->feature_id] = new stdClass; не работает Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 8 февраля, 2018 Жалоба Поделиться Опубликовано 8 февраля, 2018 добавляю $temp_options[$option->feature_id] = new stdClass; не работает я написал что для php5.4 вам не нужно это добавлять. если у вас все работает как вы выше написали. зачем вы себе придумываете? Цитата Ссылка на сообщение Поделиться на другие сайты
aroman80 Опубликовано 8 февраля, 2018 Жалоба Поделиться Опубликовано 8 февраля, 2018 я написал что для php5.4 вам не нужно это добавлять. если у вас все работает как вы выше написали. зачем вы себе придумываете?прогресс не стоит на месте, когда то нужно же будет переходить на php 7 Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.