Création - Formulaire d'ajout à distance

Objectif : Une application Web permettant de lister et de créer un nouveau client.
*Difficulté : ***

Préparation

Dupliquez le fichier lister_les_clients.php de la section 3.3 vers un fichier nommé C-CRUD.php à la racine de votre serveur Web.

L'ajout de ressource peut s'apparenter à une mise à jour à partir d'un élément vide.

Mais comment récupérer un XML formaté en tant que client vide ?

Dans le service web, il existe une méthode pour récupérer un XML vide, elle est accessible grâce à une URL formatée comme suit :

[http://maboutique.com/api/[Nom de la ressource]?schema=blank

Il est possible de remplacer la valeur du paramètre schema « blank » par « synopsis » afin de récupérer davantage d'informations sur les champs de la ressource.

Comme nous l'avons vu dans la section 3.3 "Lister les clients", il est possible de passer comme tableau de paramètre à "get", "resource" et "id", il est également possible de ne spécifier qu'une url de cette façon :

$xml = $webService->get( array( 'url' => 'http://maboutique.com/api/customers?schema=blank' ) );

Ici, nous récuperons dans la variable XML l'intégralité d'un client vide.

Début du fichier XML récupéré :

<prestashop>
  <customer>
    <id_default_group/>
etc...

Nous pouvons ensuite grâce aux nom des champs que nous avons, créer un formulaire associé.

Récupération de l'ensemble des champs :

$resources = $xml->children()->children();

Parcours de l'ensemble des champs et partie de la création dynamique des champs du formulaire dans un tableau :

foreach ( $resources as $key => $resource ) { 
  echo '<tr><th>' . $key . '</th><td>';
  echo '<input type="text" name="' . $key . '" value=""/>';
  echo '</td></tr>';
}

Une fois les données passées en POST, nous allons associer les données envoyées avec le fichier XML vierge ; cette technique est la même que pour la mise à jour de données.

foreach ( $resources as $nodeKey => $node ) {
  $resources->$nodeKey = $_POST[ $nodeKey ];
}

L'appel au service web est quand à lui ressemblant à ce que nous avons pu voit précédemment :

$opt = array( 'resource' => 'customers' );
$opt[ 'xml' ] = $xml->asXML();
$xml = $webService->add( $opt );

Réalisez maintenant un script qui permet d'ajouter un client. Pensez que certains champs sont obligatoires, il ne faut pas l'oublier.

Si vous rencontrez des difficultés, regardez le code de 3-Create.php.