Nous avons vu sur le post précédent qu'il était possible de travailler avec des données php en utilisant la librairie amfphp, cette méthode demande quelques manips.
Voici une autre méthode plus simple mais qui ne permet pas de travailler avec des données complexes.
Classes utilisées:
URLRequest (flash.net.URLRequest)
URLLoader (flash.net.URLLoader)
URLVariables (flash.net.URLVariables)
Le fichier
test.mxml contient un bouton pour appeler le fichier php, un textInput pour envoyer des données par méthode $_POST et un TextArea pour récupérer le retour des informations du fichier php, un appel à la fonction init pour initialiser les variables.
Le fichier
test.as utilise trois classes pour travailler avec php, la classe URLVariables qui va nous permettre d'envoyer et de recevoir les données, la classe URLRequest va envoyer une requête par méthode post au fichier php, la classe URLLoader enfin va lire les informations renvoyées par le fichier php.
Le fichier
test.php quand a lui est tout simple, il va attendre une variable $POST['demande'] et renvoyer un echo qui sera interprété par flex comme une réception GET ( maVar1=lalala&maVar2=tralala etc...)
Fichier test.mxml:(src/text.mxml)
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
applicationComplete="init()"
height="198" width="264" viewSourceURL="srcview/index.html">
<mx:Script source="test.as" />
<mx:TextArea x="52" y="96" height="74" id="zoneTexte"/>
<mx:Button x="61" y="66" label="Appel du fichier php" id="btn" click="bouton()"/>
<mx:TextInput x="79.5" y="36" id="textInput" width="99.5"/>
<mx:Text x="79" y="10" text="Saisir un texte" width="100" />
</mx:Application>
Fichier test.as:(src/test.as)
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLVariables;
public var variables:URLVariables;
public var loader:URLLoader;
public var request:URLRequest;
public function init():void{
variables = new URLVariables();
request= new URLRequest('test.php');
request.method='POST';
loader = new URLLoader();
loader.addEventListener(Event.COMPLETE,finChargement);
loader.addEventListener(IOErrorEvent.IO_ERROR,erreur);
}
public function bouton():void{
if(''!==textInput.text){
variables.demande = textInput.text;
request.data=variables;
loader.load(request);
}else{
zoneTexte.text='Veuillez saisir un texte au dessus';
}
}
public function finChargement(e:Event):void{
variables.verif='';
variables.decode(e.target.data);
zoneTexte.text;
zoneTexte.text=variables.verif;
}
public function erreur(e:Event):void{
}
Fichier test.php:(src/test.php)
<?php
if(!empty($_POST['demande'])){
$var=$_POST['demande'];
echo "verif=Variable envoyee par \$POST['demande']=$var";
}
?>
Le code source
http://www.progs.fr/exemple/08101703/index.html
Quelques liens et exemples:
La doc sur adobe
http://livedocs.adobe.com/flex/3/html/help.html?content=17_Networking_an...
Exemples en anglais
http://blog.flexexamples.com/2007/07/28/loading-files-using-the-urlloade...
http://blog.flexexamples.com/2007/10/30/using-the-urlvariables-and-filer...
http://tush.wordpress.com/2007/07/20/actionscript-3-using-urlloader-to-s...
Exemples en français
http://www.flex-tutorial.fr/2008/06/25/flex-urlloader-envoyer-des-parame...
http://www.flex-tutorial.fr/2008/06/25/flex-urlloader-envoyer-des-requet...