Child pages
  • Chapitre 6 - Création - Formulaire d'ajout à distance

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

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.