julianbaros Posted July 12, 2018 Share Posted July 12, 2018 (edited) Bonjour, Cela fait plusieurs jours que je cherche sans aucunes réponses. Grâce à l'API, j'ai créé un webservice qui me permet de mettre à jour facilement le poids de mes commandes en récupérant les données dans la base. Je souhaiterais pouvoir modifier facilement mes catégories en y allant progressivement. J'arrive pour l'instant à avoir l'id de ma catégorie mais il ne veut pas me récupérer le nom, les metas description title, etc. (cf Api.png) Mais voilà mon soucis, lorsque je veux afficher le nom de la catégorie, il ne veut rien savoir. J'ai essayé plusieurs choses mais sans succès (que vous verrez dans mon code publié ci-dessous ). <?php define('DEBUG', false); // Debug mode define('PS_SHOP_PATH', 'http://www.agricolors.fr'); // Root path of your PrestaShop store http://www.myshop.com/ define('PS_WS_AUTH_KEY', 'I7GD471MGBZKY5L76FL1R5I5CUTGB44H'); // Auth key (Get it in your Back Office)ZQ88PRJX5VWQHCWE4EE7SQ7HPNX00RAJ require_once('./PSWebServiceLibrary.php'); try { $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG); $opt = array('resource' => 'categories', 'limit' => '10', 'sort' => '[id_ASC]'); if (isset($_GET['id'])) $opt['id'] = $_GET['id']; $xml = $webService->get($opt); // Here we get the elements from children of customer markup which is children of prestashop root markup $resources = $xml->children()->children(); } catch (PrestaShopWebserviceException $e) { // Here we are dealing with errors $trace = $e->getTrace(); if ($trace[0]['args'][0] == 404) echo 'Bad ID'; else if ($trace[0]['args'][0] == 401) echo 'Bad auth key'; else echo 'Other error<br />'.$e->getMessage(); } if (isset($_GET['id']) && isset($_POST['id'])) { // Here we have XML before update, lets update XML foreach ($resources as $nodeKey => $node) { $resources->$nodeKey = $_POST[$nodeKey]; } } if (isset($_GET['id'])) echo '<form method="POST" action="?id='.$_GET['id'].'">'; ?> <br> <table class="table table-striped table-bordered table-hover" data-provide="datatable" data-info="true" > <?php if(isset($resources)) { if(!isset($_GET['id'])) { ?> <thead> <tr> <th data-filterable="true">Id Category</th> <th data-filterable="true">Nom de la catégorie</th> <th data-filterable="false" class="hidden-xs hidden-sm">Update</th> </tr> </thead> <tbody> <?php foreach ($resources as $resource ) { $opt['id'] = $resource->attributes(); $xml = $webService->get($opt); $r = $xml->children()->children(); echo '<tr>'; echo '<td>'.$r->id.'</td>'; echo '<td>'.$r->name. '</td>'; echo '<td><a href="?id='.$resource->attributes().'">Update</a></td>'; echo '</tr>'; } } else { foreach ($resources as $key => $resource) { echo '<tr>'; echo '<th>'.$key.'</th><td>'; echo '<input type="text" id="name" name="'.$key.'" value="'.$resource.'" class="form-control" data-required="true" >'; echo '</td></tr>'; } } } ?> Voici le résultat que j'obtiens dans ma page (cf resultats.png). Ce que je ne comprends pas c'est pourquoi il ne m'affiche pas le name avec echo '<td>'.$r->name. '</tr>, alors qu'il est bien dans categories (cf Api.png). J'aimerais donc pouvoir afficher les autres données contenus dans catégories. Voilà, si quelqu'un pourrait m'aider ici s'il vous plait cela serait sympa ! Edited July 13, 2018 by julianbaros (see edit history) Link to comment Share on other sites More sharing options...
julianbaros Posted July 13, 2018 Author Share Posted July 13, 2018 Bonjour, Après moultes essais, j'ai trouvé la solution. Il suffisait de faire : echo '<td>'.$r->name->children(). '</td>'; Maintenant, je n'arrive pas à modifier les catégories mais ça c'est un autre problème. 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