Jump to content

[Résolu][API WebService] Lier différentes données (catégories)


Recommended Posts

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 !

Api.png

resultats.png

Edited by julianbaros (see edit history)

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
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
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More