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
Note |
---|
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 :
Code Block |
---|
$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é :
Code Block |
---|
<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 :
Code Block |
---|
$resources = $xml->children()->children(); |
Parcours de l'ensemble des champs et partie de la création dynamique des champs du formulaire dans un tableau :
Code Block |
---|
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.
Code Block |
---|
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 :
Code Block |
---|
$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
.