Jump to content

Editer produit


Recommended Posts

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 :

 

post-755479-0-42082300-1403795331_thumb.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 !

 

 

Link to comment
Share on other sites

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 :

 

attachicon.gifpb77.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

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

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 by Eolia (see edit history)
Link to comment
Share on other sites

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 by vik93 (see edit history)
Link to comment
Share on other sites

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  :

 

post-755479-0-44731100-1403867647_thumb.jpg

 

Je ne sais pas si je suis sur la bonne voie ?

Link to comment
Share on other sites

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  :

 

attachicon.gifpb88.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 by Eolia (see edit history)
Link to comment
Share on other sites

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

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

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

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

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...