Curieux et passionné des nouvelles technologies et de l'Open Source.

Php, Symfony, Drupal, Docker, Git, PL/SQL Oracle , API Rest, Soap, Apache2, MySql,Java, ...

Management, Scrum/Agile, étude/analyse, gestion de projet, ...


Latrach Said développeur - Symfony
Latrach Said développeur - Drupal 8
Latrach Said développeur - git gitlab github
Latrach Said développeur - oracle pl/sql sql procedure function trigger package
Latrach Said développeur - java
Latrach Said développeur - React native
Latrach Said développeur - Prestashop

Créer un formulaire avec Drupal 7 pour consommer un webservice SOAP

pour créer ce formulaire j'ai utilisé l'API Drupal 7: http://api.drupal.org/api/drupal

1 - Création du menu
le formulaire a pour lien "site.com/ws" accessible depuis le menu principal avec le menu "Web service"
les éléments du formulaire seront définit par la fonction "ws_soap_query_form"

<?php
function ws_soap_menu() { 
   
$items['ws'] = array(
       
'title' => 'Web service',
       
'description' => t('formulaire pour consommer un Webservice SOAP'),
       
'menu_name' => 'main-menu',
       
'page callback' => 'drupal_get_form',
       
'page arguments' => array('ws_soap_query_form'),
       
'access callback' => TRUE,
    );
  return
$items;
}
?>

2 - Création du formulaire
le formulaire est composé de deux parties :
- les paramètres d'entrée pour la requête XML avec un bouton "submit" pour intéroger le webservice
- les champs pour la réponse du Webservice avec un bouton "submit" pour créer un "node" de type "article" à partir de la réponse.

les bouton "submit" utilise "Ajax" afin de ne pas rafraichir la page et remplir dynamiquement les champs:

<?php
function ws_soap_query_form ($form, &$form_state){    
   
// inputs ===================================
   
$form['ipAddress'] = array(
       
'#type' => 'textfield',
       
'#title' => t('IP Address'),
       
'#default_value' => '110.11.1',
       
'#prefix' => '<h2>Query</h2>',
    );
   
$form['licenseKey'] = array(
       
'#type' => 'textfield',
       
'#title' => t('licenseKey'),
       
'#default_value' => '0',
        );
   
//=== Submit  : interroger le Webservice ===
   
$form['submit'] = array(
       
'#type' => 'submit',
       
'#value' => 'Submit',
       
'#ajax' => array(
                 
'callback' => 'get_response_soap',
                 
'wrapper' => 'response_soap',
                 
'method' => 'replace',
                 
'effect' => 'fade',
                ),
    );
   
//=== Response ===
   
   
$form['response'] = array(  
       
'#prefix' => '<h2>Response',
       
'#suffix' => '</h2>',
    );
  
   
$form['response_soap'] = array(  
       
'#prefix' => '<div id="response_soap">',
       
'#suffix' => '</div>',
    );

   

$form['response_soap']['xml'] = array(
       
'#type' => 'textarea',
       
'#title' => t('XML response'),
    );
  
   
$form['response_soap']['country'] = array(
       
'#type' => 'textfield',
       
'#title' => t('country'),
    );

   

$form['response_soap']['longitude'] = array(
       
'#type' => 'textfield',
       
'#title' => t('longitude'),
    );
   
$form['response_soap']['latitude'] = array(
       
'#type' => 'textfield',
       
'#title' => t('latitude'),  
    );
 
//=== Création de l'article ===
   
$form['response_soap']['submit'] = array(
       
'#type' => 'submit',
       
'#value' => 'Create node'
       
'#ajax' => array(
                 
'callback' => 'create_node',
                 
'wrapper' => 'message',
                 
'method' => 'replace',
                 
'effect' => 'fade',
                ),
    );
      
$form['message'] = array(
       
'#prefix' => '<div id="message">',
       
'#suffix' => '</div>',
    );
$form['message']['create_node'] = array(
       
'#type' => 'markup',
    );   
    return
$form;  
}
?>

... à suivre

Tags: 

Catégories: 

Share/Save

Ajouter un commentaire

Filtered HTML

  • Pour publier des morceaux de code, entourez-les avec les balises <code>...</code>. Pour du PHP, utilisez. <?php ... ?>, ce qui va colorier le code en fonction de sa syntaxe.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
CAPTCHA
Cette question permet de s'assurer que vous êtes un utilisateur humain et non un logiciel automatisé de pollupostage (spam).
Image CAPTCHA
Saisir les caractères affichés dans l'image.