gamdev Posted September 29, 2015 Share Posted September 29, 2015 Criei um script para adicionar ou atualizar produtos para o meu prestashop. Eu tenho feito com o webservice. Eu atualizei meu prestashop para a versão 1.6.1.0 e parou de funcionar meu script. Eu vi PSWebServiceLibrary.php precisa de outra nova biblioteca, então eu a baixei. O que acontece é que agora eu recebo o seguinte erro: "Node no longer exists" Este é o código onde da o erro: function getProductByEan($ean){ global $webService; $opt['resource'] = 'products'; $opt['filter']['ean13'] = $ean; $xml = $webService->get($opt); var_dump($xml); if($xml){ $x = ($xml->products[0]->product->attributes()); $ProductId = $x['id']; return $ProductId; } else return null; } Obrigada por tudo Link to comment Share on other sites More sharing options...
Daniel - PrestaBR Posted September 29, 2015 Share Posted September 29, 2015 Se você utilizava a versão 1.4.X ou anterior do PrestaShop e atualizou para a versão atual, deve revisar a função, pois muitas coisas mudaram no webservice. Não sei todos os detalhes de cabeça mas, pelo seu código, pode ser que não tenha mais a variável global $webService, pois desde a versão 1.5.X não são mais utilizadas variáveis globais, que foram substituídas por Contextos. Link to comment Share on other sites More sharing options...
gamdev Posted September 30, 2015 Author Share Posted September 30, 2015 Passei da 1.6.0.9 a versão 1.6.10 Link to comment Share on other sites More sharing options...
selectshop.at Posted September 30, 2015 Share Posted September 30, 2015 Como o Daniel já disse. global $webService nao mais funcionam. Pode ser que na versao 1.6.0.9 ainda funcionava, mas na versao 1.6.1.0 nao mais, pois é um pulo de versao !!! 1.6.0 para 1.6.1. 1 Link to comment Share on other sites More sharing options...
Daniel - PrestaBR Posted September 30, 2015 Share Posted September 30, 2015 O modo debug não mostra os erros? Link to comment Share on other sites More sharing options...
gamdev Posted September 30, 2015 Author Share Posted September 30, 2015 (edited) no modo debug é quando me sai esse erro: "Node no longer exists" ja apaguei os global webservice e adicionei: $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG); Mas continua a sair o mesmo erro: "Node no longer exists" tenha o não tenho resultado a consulta gerada Edited September 30, 2015 by gamdev (see edit history) Link to comment Share on other sites More sharing options...
selectshop.at Posted September 30, 2015 Share Posted September 30, 2015 (edited) Node no loger exists. O atributo que vc. está tentando alcancar nao mais existe. Verifique se o ID do servico web nao foi apagado por engano. Quem foi que codou o webservice ? Este deverá verificar o código. Edited September 30, 2015 by selectshop.at (see edit history) Link to comment Share on other sites More sharing options...
gamdev Posted September 30, 2015 Author Share Posted September 30, 2015 este é o code sosinho: <?phpdefine('PS_SHOP_PATH', 'http://127.0.0.1/XXX');define('PS_WS_AUTH_KEY', 'XXXXXXXXXX');require_once('./PSWebServiceLibrary.php');define('DEBUG', true);$webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG); $opt['resource'] = 'combinations';$opt['filter']['ean13'] = 0000008; $xml = $webService->get($opt); if($xml){$x = ($xml->combinations[0]->combination->attributes());if(isset($x) && count($x) >0){$ProductId = $x['id'];}else{$ProductId ="";}echo $ProductId;}else{echo "NULL";}?> ESTE É A RESPOSTA:HTTP REQUEST HEADERGET /central/api/combinations?filter%5Bean13%5D=0 HTTP/1.1Host: 127.0.0.1Authorization: Basic VURFNzEzSFpYWkJBSVRWSDIxVjhNR0IzSjdUQ1JLUUY6Accept: */*HTTP RESPONSE HEADERHTTP/1.1 200 OKDate: Wed, 30 Sep 2015 14:35:46 GMTServer: Apache/2.4.12 (Win32) OpenSSL/1.0.1m PHP/5.6.11Vary: HostX-Powered-By: PrestaShop WebserviceAccess-Time: 1443623746PSWS-Version: 1.6.1.0Execution-Time: 0.25Content-Sha1: 43128015913feebbed1464670a8824ab32b4f9a3Set-Cookie: PrestaShop-41c26d3e69d460a47d5f865508d7c4c9=XCCvareGDpt4WNb1jmALWP3a0d%2F8pxBw3Xzmpkpiqx5ZAWRn1zoJNB0B%2BZfNMhzKm7FBc0nzXlmUi0WFrAQD8zzh4%2FjzZ2%2F%2Bfg96NzcQ2Mg%3D000079; expires=Tue, 20-Oct-2015 14:35:46 GMT; Max-Age=1728000; path=/central/; httponlyContent-Length: 140Content-Type: text/xml;charset=utf-8RETURN HTTP BODY<?xml version="1.0" encoding="UTF-8"?><prestashop xmlns:xlink="http://www.w3.org/1999/xlink"><combinations></combinations></prestashop>Warning: count(): Node no longer exists in C:\xampp\htdocs\central\scripts\prueba2.php on line 15 Link to comment Share on other sites More sharing options...
selectshop.at Posted September 30, 2015 Share Posted September 30, 2015 Vc. etá testando o webservice em XAMPP ? Warning: count(): Node no longer exists in C:\xampp\htdocs\central\scripts\prueba2.php on line 15 Use somente servicos que funcionem. Nao acredito que um servico local como o XAMPP funcione. Link to comment Share on other sites More sharing options...
gamdev Posted October 2, 2015 Author Share Posted October 2, 2015 o pus no servidor e da o mesmo erro :S Link to comment Share on other sites More sharing options...
selectshop.at Posted October 2, 2015 Share Posted October 2, 2015 (edited) Sim pelo fato de que global variables nao mais atendem a versao prestashop em uso, isto já tentamos explicar-lhe em todos os tópicos que eu o Daniel adicionamos por aqui. Veja aqui uma lista atual dos global variables: http://www.maximelebreton.com/labs/memo-des-variables-prestashop/ e a lista de contextos: https://www.prestashop.com/forums/topic/442971-use-of-globals-is-forbidden/ e https://www.prestashop.com/forums/topic/471102-creat-global-variable-in-module/ A dica para o seu segundo erro, foi dada somente em relacao ao fato que uma máquina local em geral nao troca dados em multiplos sentidos (send <-> get), por falta de protocolos apropriados. Servicos emulados (Wampp/Xampp) sao emulados e nao possuem a mesma configuracao e valor do que um servico live no servidor. Emulacoes sao para testar, só que também possuem limites. Edited October 2, 2015 by selectshop.at (see edit history) Link to comment Share on other sites More sharing options...
Daniel - PrestaBR Posted October 2, 2015 Share Posted October 2, 2015 este é o code sosinho: <?php define('PS_SHOP_PATH', 'http://127.0.0.1/XXX'); define('PS_WS_AUTH_KEY', 'XXXXXXXXXX'); require_once('./PSWebServiceLibrary.php'); define('DEBUG', true); $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG); $opt['resource'] = 'combinations'; $opt['filter']['ean13'] = 0000008; $xml = $webService->get($opt); if($xml){ $x = ($xml->combinations[0]->combination->attributes()); if(isset($x) && count($x) >0){ $ProductId = $x['id']; }else{ $ProductId =""; } echo $ProductId; }else{ echo "NULL"; } ?> Warning: count(): Node no longer exists in C:\xampp\htdocs\central\scripts\prueba2.php on line 15 A mensagem "No longer exists" pode ser por conta do filtro: $opt['filter']['ean13'] = 0000008; Tem certeza que existe um produto com este EAN13 ? Link to comment Share on other sites More sharing options...
selectshop.at Posted October 2, 2015 Share Posted October 2, 2015 além do mais o formato de um EAN é de 13 dígitos o seu filtro somente possue 7 dígitos ! mas nao acredito que o erro esteja alí. O erro vem da linha 15 e esta diz: $ProductId =""; ou entao se nao for contar as linhas em branco $ProductId = $x['id']; Link to comment Share on other sites More sharing options...
gamdev Posted October 7, 2015 Author Share Posted October 7, 2015 ao final troquei todo o código, mas ainda não sei porque deixo de funcionar 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