Jump to content

Problem z importem XML


atwora

Recommended Posts

Witam szanowni forumowicze...

 

Mam problem i powoli kończą mi się pomysły jak go rozwiązać. Pracuję w modelu Dropshipping z jedną z hurtowni polskich (biżuteria) i kilka dni temu Dostawca musiał chyba wprowadzić jakiś produkt, który powoduje u mnie błędy w imporcie / aktualizacji produktów.

 

Mam włączone akceptowanie iFrames. Próbowałem nawet wyłączać HTML Purifier oraz tymczasowo odinstalowałem Adon "protect my shop" zakupiony do potrzeb polepszenia bezpieczeństwa sklepu, w parze z wyłączenie opcji "podwyższone bezpieczeństwo sklepu" - wszystko pod sugestie których naczytałem się na forach. Ktoś gdzieś wspominał o długości znaków w opisie - to też nie to.

 

Strona jest postawiona na Prestashop 1.6.1.6 (zaktualizowąłem ją dziś w nocy...tj wczoraj w nocy z wersji 1.6.1.2 bo miałem nadzieję, że coś pomoże). Od samego początku strona miała też tylko jeden język pomimo, że w domyślnym zakupionym szablonie (zakupionym od Leo themes) była od samego początku opcja przełączania na obcy język (ale to chyba nie powinno mieć znaczenia?) 

 

Na początku system zwracał błąd mniej-więcej na statusie 85% aktualizacji. Przedwczoraj na 15% a teraz kompletnie leży...śmiałem się już, że może problem zaraz się sam naprawi gdy usunięty zostanie wadliwy produkt ale średnie to pocieszenie zważywszy, że w przyszłości podobny problem może się również pojawić.

 

W razie potrzeby mogę też umieścić ten plik XML jeśli ktoś uzna to za pomocne.

 

Dotyczy sklepu www.atwora.pl

 

Będę wdzięczny za jakieś sugestie co mogło pójść nie tak

 

Poniżej zamieszczam błąd jaki system zwraca gdy próbuję dokonać aktualizacji magazynu:

 

Property FeatureValue->value is not valid
at line 954 in file classes/ObjectModel.php

949.                 }950. 951.                 $message = $this->validateField($field, $value, $id_lang);952.                 if ($message !== true) {953.                     if ($die) {954.                         throw new PrestaShopException($message);955.                     }956.                     return $error_return ? $message : false;957.                 }958.             }959.         }

 

 

Link to comment
Share on other sites

Nie pokazałeś pozostałych błędów tylko pierwszy, ale wygląda na to, że w pliku xml jest jakaś cecha produktu nieistniejąca w Twoim sklepie.

Moduł próbuje utworzyć tę cechę: Sentiell->addProductFeature

ale na walidacji nazwy cechy się wywala: validateFieldsLang

Pole nazwy cechy produktu nie może zawierać znaków specjalnych typu: <>#={}

Link to comment
Share on other sites

Przepraszam, już zamieszczam pełen raport...ale też właśnie szukam rozwiązania z zakresu akceptowania znaków specjalnych...jestem jednak marketingowcem niż programistą... dlatego dziękuję za zainteresowanie się tematem :)

 

Property FeatureValue->value is not valid
at line 954 in file classes/ObjectModel.php

949.                 }950. 951.                 $message = $this->validateField($field, $value, $id_lang);952.                 if ($message !== true) {953.                     if ($die) {954.                         throw new PrestaShopException($message);955.                     }956.                     return $error_return ? $message : false;957.                 }958.             }959.         }
  • ObjectModelCore->validateFieldsLang - [line 295 - classes/ObjectModel.php]
    290.         // Backward compatibility291.         if (method_exists($this, 'getTranslationsFieldsChild')) {292.             return $this->getTranslationsFieldsChild();293.         }294. 295.         $this->validateFieldsLang();296.         $is_lang_multishop = $this->isLangMultishop();297. 298.         $fields = array();299.         if ($this->id_lang === null) {300.             foreach (Language::getIDs(false) as $id_lang) {
  • ObjectModelCore->getFieldsLang - [line 511 - classes/ObjectModel.php]
    506.             return false;507.         }508. 509.         // Database insertion for multilingual fields related to the object510.         if (!empty($this->def['multilang'])) {511.             $fields = $this->getFieldsLang();512.             if ($fields && is_array($fields)) {513.                 $shops = Shop::getCompleteListOfShopsID();514.                 $asso = Shop::getAssoTable($this->def['table'].'_lang');515.                 foreach ($fields as $field) {516.                     foreach (array_keys($field) as $key) {
  • ObjectModelCore->add - [line 178 - classes/FeatureValue.php] - [2 Arguments]
    Argument [0]1Argument [1]
  • FeatureValueCore->add - [line 681 - modules/sentiell/sentiell.php]
    676. 			foreach ($this->languages as $language)677. 			{678. 				$fv->value[$language['id_lang']] = $value;679. 				$fv->custom = 0;680. 			}681. 			$fv->add();682. 			$fvid = (int)$fv->id;683. 		}684. 		else685. 			$fvid = (int)$result['id_feature_value'];		686. 
  • Sentiell->addProductFeature - [line 885 - modules/sentiell/sentiell.php] - [3 Arguments]
    880. 							$sql = 'DELETE FROM '._DB_PREFIX_.'feature_product WHERE id_product = '.$p->id;//.' AND id_feature_value = '.(int)$fvid.') OR (id_product = '.$product->id.' AND id_feature = '.(int)$id_feature.')';881. 							Db::getInstance()->execute($sql);882. 												883. 							foreach ($product['features'] as $key => $feature)884. 								if (isset($features[$key]))885. 									$this->addProductFeature($features[$key], $feature, $p);886. 						}887. 						$p->active = $sum > 0 ? true : false;888. 							889. 						$p->update();						890. 					}
  • Sentiell->importProducts - [line 1289 - modules/sentiell/sentiell.php] - [1 Arguments]
    1284. 		}// Produkty1285. 		1286. 		if (!$import)1287. 			return $products;1288. 		$this->deleteProducts($products, false);1289. 		return $this->importProducts($products);1290. 	}1291. 1292. 1293. 	public function deleteCategoriesNotActive()1294. 	{
  • Sentiell->parseProducts - [line 422 - modules/sentiell/sentiell.php] - [1 Arguments]
    417. 		else if (Tools::isSubmit('import_producers'))418. 			$this->html = $this->parseProducers($this->xml_http['products']);419. 		else if (Tools::isSubmit('import_products'))420. 		{421. 			$this->downloadXml();422. 			$this->parseProducts($this->xml_http['products']);423. 		}424. 		else if (Tools::isSubmit('update_name'))425. 		{426. 			$this->updateConfiguration(array('name'=>1,'only_update'=>1));427. 			$this->parseProducts($this->xml_http['products']);
  • Sentiell->ppostProcess - [line 1533 - modules/sentiell/sentiell.php]
    1528. 1529. 		$this->margin_price = Db::getInstance()->executeS('SELECT * FROM '._DB_PREFIX_.$this->margin);1530. 		$this->deleteProductQ0();1531. 		set_time_limit(0);1532. 		$this->parseFeatures($this->xml_http['features']);1533. 		$this->ppostProcess();1534. 		$this->contentArray();1535. 1536. 		$status = $this->getStatus();1537. 1538. 		$smarty->assign('paramTable', $this->contentArray());
  • Sentiell->getContent - [line 867 - controllers/admin/AdminModulesController.php]
    862. 863.                             if (count($this->errors)) {864.                                 continue;865.                             }866.                             // Get the return value of current method867.                             $echo = $module->{$method}();868. 869.                             // After a successful install of a single module that has a configuration method, to the configuration page870.                             if ($key == 'install' && $echo === true && strpos(Tools::getValue('install'), '|') === false && method_exists($module, 'getContent')) {871.                                 Tools::redirectAdmin(self::$currentIndex.'&token='.$this->token.'&configure='.$module->name.'&conf=12');872.                             }
  • AdminModulesControllerCore->postProcessCallback - [line 1116 - controllers/admin/AdminModulesController.php]
    1111.             }1112.         }1113. 1114.         // Call appropriate module callback1115.         if (!isset($ppm_return)) {1116.             $this->postProcessCallback();1117.         }1118. 1119.         if ($back = Tools::getValue('back')) {1120.             Tools::redirectAdmin($back);1121.         }
  • AdminModulesControllerCore->postProcess - [line 178 - classes/controller/Controller.php]
    173.             if (!$this->content_only && ($this->display_header || (isset($this->className) && $this->className))) {174.                 $this->setMedia();175.             }176. 177.             // postProcess handles ajaxProcess178.             $this->postProcess();179. 180.             if (!empty($this->redirect_after)) {181.                 $this->redirect();182.             }183. 
  • ControllerCore->run - [line 367 - classes/Dispatcher.php]
    362.             if (isset($params_hook_action_dispatcher)) {363.                 Hook::exec('actionDispatcher', $params_hook_action_dispatcher);364.             }365. 366.             // Running controller367.             $controller->run();368.         } catch (PrestaShopException $e) {369.             $e->displayMessage();370.         }371.     }372. 
  • DispatcherCore->dispatch - [line 58 - admin/index.php]
    53. if (!isset($_REQUEST['controller']) && isset($_REQUEST['tab'])) {54.     $_REQUEST['controller'] = strtolower($_REQUEST['tab']);55. }56. 57. // Prepare and trigger admin dispatcher58. Dispatcher::getInstance()->dispatch();
Link to comment
Share on other sites

Jednak problemem nie są znaki w nazwie, tylko brak nazwy cechy produktu.

Nie znam tego modułu Sentiell i nie wiem na jakiej zasadzie odbywa się mapowanie danych i jak były tworzone cechy produktów. Czy ręcznie, czy też jakimś importem z xml.

Ale w tej hurtowni, z której pobierasz dane, utworzono jakąś nową cechę produktu, której nie ma w Twojej preście.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...