atwora Posted August 22, 2016 Share Posted August 22, 2016 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 validat 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] ObjectModelCore->getFieldsLang - [line 511 - classes/ObjectModel.php] ObjectModelCore->add - [line 178 - classes/FeatureValue.php] - [2 Arguments] FeatureValueCore->add - [line 681 - modules/sentiell/sentiell.php] Sentiell->addProductFeature - [line 885 - modules/sentiell/sentiell.php] - [3 Arguments] Sentiell->importProducts - [line 1289 - modules/sentiell/sentiell.php] - [1 Arguments] Sentiell->parseProducts - [line 422 - modules/sentiell/sentiell.php] - [1 Arguments] Sentiell->ppostProcess - [line 1533 - modules/sentiell/sentiell.php] Sentiell->getContent - [line 867 - controllers/admin/AdminModulesController.php] AdminModulesControllerCore->postProcessCallback - [line 1116 - controllers/admin/AdminModulesController.php] AdminModulesControllerCore->postProcess - [line 178 - classes/controller/Controller.php] ControllerCore->run - [line 367 - classes/Dispatcher.php] DispatcherCore->dispatch - [line 58 - admin/index.php] Link to comment Share on other sites More sharing options...
e_com Posted August 23, 2016 Share Posted August 23, 2016 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 More sharing options...
atwora Posted August 23, 2016 Author Share Posted August 23, 2016 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 validat 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 More sharing options...
e_com Posted August 23, 2016 Share Posted August 23, 2016 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now