vik93 Posted June 26, 2014 Share Posted June 26, 2014 Bonjour à tous ! Je suis actuellement confronté à un problème : Je souhaite modifier un produit via le WebService. L'ajout se fait sans problème, mais sur la modification, le link_rewrite ne suit pas ! Voici en image ce que ça me met : J'ai fait en sorte de mettre des tiret, comme pour l'ajout. Mais là, ça me met une erreur incompréhensible.... En espérant trouver de l'aide ! Link to comment Share on other sites More sharing options...
Eolia Posted June 26, 2014 Share Posted June 26, 2014 Bonjour à tous ! Je suis actuellement confronté à un problème : Je souhaite modifier un produit via le WebService. L'ajout se fait sans problème, mais sur la modification, le link_rewrite ne suit pas ! Voici en image ce que ça me met : pb77.jpg J'ai fait en sorte de mettre des tiret, comme pour l'ajout. Mais là, ça me met une erreur incompréhensible.... En espérant trouver de l'aide ! enlevez les accents de vos url réécrites (url_link_rewrite) et vous n'aurez plus de souci Link to comment Share on other sites More sharing options...
vik93 Posted June 27, 2014 Author Share Posted June 27, 2014 Bonjour et merci pour votre réponse Alors j'ai essayé de retirer les accents, ça marche ! Cependant, dans mon script, quand je mets des caractères chinois par exemples, ça ne passe plus... Basiquement, pour qu'il prenne en compte les caractères chinois (et accents), je dois mettre ça comme ceci : $linkRew = '结账纸 Bobine 80x80x12'; <language id="1" format="isUnsignedId"><![CDATA[ $linkRew ]]></language> Pour l'ajout d'un produit, tout se passe sans problème, cependant pour la modification ça bloque ! Si il n'y avait que les accents à gérer, ça fonctionne très bien comme ça : $linkRew = 'Bobine élastique à paris 80x80x12'; <language id="1" format="isUnsignedId">$linkRew</language> En gros, <![CDATA[ ]]> permet de gérer les caractères spéciaux et accents. Du coup je suis perdu, ça bloque ici :-( Link to comment Share on other sites More sharing options...
Eolia Posted June 27, 2014 Share Posted June 27, 2014 (edited) Bonjour et merci pour votre réponse Alors j'ai essayé de retirer les accents, ça marche ! Cependant, dans mon script, quand je mets des caractères chinois par exemples, ça ne passe plus... Basiquement, pour qu'il prenne en compte les caractères chinois (et accents), je dois mettre ça comme ceci : $linkRew = '结账纸 Bobine 80x80x12'; <language id="1" format="isUnsignedId"><![CDATA[ $linkRew ]]></language> Pour l'ajout d'un produit, tout se passe sans problème, cependant pour la modification ça bloque ! Si il n'y avait que les accents à gérer, ça fonctionne très bien comme ça : $linkRew = 'Bobine élastique à paris 80x80x12'; <language id="1" format="isUnsignedId">$linkRew</language> En gros, <![CDATA[ ]]> permet de gérer les caractères spéciaux et accents. Du coup je suis perdu, ça bloque ici :-( il faudrait un <?xml version="1.0" encoding="UTF-8"?> dans l'en-tête de votre fichier xml alors. PS Le <![CDATA[ ]]> sert juste à indiquer que la ligne ne doit pas être interprétée en langage xml, mais ne s'occupe pas d'encoder les caractères Edited June 27, 2014 by Eolia (see edit history) Link to comment Share on other sites More sharing options...
vik93 Posted June 27, 2014 Author Share Posted June 27, 2014 Il y en a déjà un Link to comment Share on other sites More sharing options...
Eolia Posted June 27, 2014 Share Posted June 27, 2014 Il y en a déjà un Ben pas dans le screen cité plus haut ? Link to comment Share on other sites More sharing options...
vik93 Posted June 27, 2014 Author Share Posted June 27, 2014 (edited) Pourtant dans le fichier xml il y en a bien un :/ Pour l'ajout d'un produit, je procède à la même manière (peut être pas bonne), et ça fonctionne. Je viens de voir votre message edité plus haut, avant d'utiliser les <![CDATA[ ]]> j'avais essayé d'encoder en UTF8 (de plusieurs manières), mais sans résultat. C'est la seule solution que j'ai pu trouver avec <![CDATA[ ]]>. Edit : Pour effectuer l'action edit, voici le code que j'utilise : $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, true); $xml = new SimpleXMLElement($psXML); $opt = array('resource' => 'products'); $opt['putXml'] = $xml->asXML(); $opt['id'] = $ProductId; $xml = $webService->edit($opt); $psXML correspond aux fichier xml que je soumets. Peut être spécifier l'encodage UTF-8 dans $opt ? Je ne sais pas trop comment faire J'utilise exactement cette manière de faire : http://www.prestashop.com/forums/topic/228569-webservice-api-comment-creer-une-commande-complete/?p=1127525 Edited June 27, 2014 by vik93 (see edit history) Link to comment Share on other sites More sharing options...
vik93 Posted June 27, 2014 Author Share Posted June 27, 2014 J'ai rajouté une ligne : $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, true); $xml = new SimpleXMLElement($psXML); //Ajout de cette ligne $xml->encode_utf8 = true; $opt = array('resource' => 'products'); $opt['putXml'] = $xml->asXML(); $opt['id'] = $ProductId; $xml = $webService->edit($opt); Du coup ça donne ça : Je ne sais pas si je suis sur la bonne voie ? Link to comment Share on other sites More sharing options...
Eolia Posted June 27, 2014 Share Posted June 27, 2014 (edited) J'ai rajouté une ligne : $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, true); $xml = new SimpleXMLElement($psXML); //Ajout de cette ligne $xml->encode_utf8 = true; $opt = array('resource' => 'products'); $opt['putXml'] = $xml->asXML(); $opt['id'] = $ProductId; $xml = $webService->edit($opt); Du coup ça donne ça : pb88.jpg Je ne sais pas si je suis sur la bonne voie ? L'utf8 devrait être dans l'entête envoyée, mais bon si ca passe comme ça... Bon l'erreur est différente à présent et est générée par $xmlEntities = $xml->children(); $object = null; $ids = array(); foreach ($xmlEntities as $entity) { // To cast in string allow to check null values if ((string)$entity->id != '') $ids[] = (int)$entity->id; } if (count($xmlEntities) != count($ids)) { $this->setError(400, 'id is required when modifying a resource', 90); } En gros il trouve que le nombre d'id ne correspond pas au nombre de produits ? Le problème doit venir de la structure hiérachique du fichier xml, il faut regarder de ce coté pour voir comment elle doit être. Edited June 27, 2014 by Eolia (see edit history) Link to comment Share on other sites More sharing options...
vik93 Posted June 27, 2014 Author Share Posted June 27, 2014 Si on regarde bien le XML Sent, il met une balise dans la balise Prestashop qui se nomme <encore_utf8></encore_utf8>. Déjà je pense que ce n'est pas bon Link to comment Share on other sites More sharing options...
Eolia Posted June 27, 2014 Share Posted June 27, 2014 Si on regarde bien le XML Sent, il met une balise dans la balise Prestashop qui se nomme <encore_utf8></encore_utf8>. Déjà je pense que ce n'est pas bon encode pas encore... et c'est normal vu que vous avez mis: $xml->encode_utf8 = true; Link to comment Share on other sites More sharing options...
vik93 Posted June 27, 2014 Author Share Posted June 27, 2014 Oui, donc on revient au début : Faut trouver une solution pour qu'il prenne en compte l'UTF8 :-( $xml->encode_utf8 = true; Je l'ai justement testé pour voir si ça pouvait résoudre mon problème.... Link to comment Share on other sites More sharing options...
Eolia Posted June 27, 2014 Share Posted June 27, 2014 Vos données sont bien encodées maintenant si vous regardez la ligne correspondant au nom du produit Le problème vient de la structure du fichier, donc regarder la doc correspondant à votre version Presta Link to comment Share on other sites More sharing options...
vik93 Posted June 30, 2014 Author Share Posted June 30, 2014 Oui, j'ai justement retiré les CDATA, c'est pour ça que les caractères sont correct. Sur la doc, je ne trouve rien.... Pour l'ajout du fichier j'avais justement cherché, ensuite j'ai utilisé les CDATA pour que ça prenne en compte les accents-caractères spéciaux. C'est un réel blocage la 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