Domů > adobe, adobe air, flex, php > Jednoduchá aplikace v PHP a Flex

Jednoduchá aplikace v PHP a Flex

Protože jsem byl na Adobe Air nedalo mi to a řekl jsem si že udělám jednoduchou aplikaci pro vyhledávání v našem univerzitním LDAPu. Stáhnul jsem si trial verzi Flex Builduru 3, to se ocení zvláště pokud chcete dát aplikaci nějaký design. Výsledná aplikace vypadá takto, skládá se z několika prvků, textové pole (mx:TextInput), tlačítka (mx:Button), výběr (mx:ComboBox), ty jsou strčené do společného hboxu. Potom dole je umístěný datagrid (mx:DataGrid) pro zobrazování dat. image

Tvorba aplikace

Vytvořte projekt: File -> New -> Flex project image Tady je vidět, že nejdůležitější je nastavit mx:HTTPService na komunikaci s naším PHP skriptem, který funguje normálně jako u webové aplikace nebo spíše u AJAXové aplikace. Data vracím v XML, aby se dobře zobrazovali pomocí datagridu, ale mohl by to být i obyčejný text.

   			{txtInput.text}
   			{department.text}

Tady je část mx:Script, která se stará o ošetření toho co přijde z PHP a zobrazuje to.

			import mx.rpc.events.ResultEvent;
			import mx.rpc.events.FaultEvent;
			import mx.collections.ArrayCollection;

			public function handleResultXML(event:ResultEvent):void {
				// the result object is our xml root
				// we get the row nodes of our result object
				// the data of the dataprovider populates the component
				myDataGrid.dataProvider = event.result.row;
			}
			// this function is called when we get an error from the server
			public function handleFault(event:FaultEvent):void {
					//txtArea.text = "Fault Response from HTTPService call:\n " + event.fault.toString();
			}

Vlastní PHP skript je jednoduchý, používá mojí knihovnu, kde zadáte část jména a vrátí celé jméno i s tituly a k tomu odpovídající telefon.

$debug=false;
/**
  * Flex SSU
  */
if (!$debug) $name=$_REQUEST['query'];
else $name='prskavec';
error_log("[".date('r')."] Query: ".$_REQUEST['query']." Department:".$_REQUEST['department']."\n",3,"./flex.log");

if ($_REQUEST['department']=="VIC")
$vic=true;
else
 $vic=false;    

include "inc/config.inc.php";
include_once "inc/ldap_class.php";
$ldap=new Ldap($config);

print "<?xml version='1.0' encoding='UTF-8 ?>";
print "<rows>";

foreach ($ldap->get_person($name,$vic) as $person)
{
  $phone=$ldap->ldap_phone($person['cvutphone']['0']);
   if (!empty($phone))
   {
    if ($debug) var_dump($person);
    print "<row>";
    print "<cn>".$person['cn;lang-cs']['0']."</cn>";
	print "<phone>".$phone."</phone>";
    print "<email>".$person['preferredemail']['0']."</email>";
	print "</row>";

    error_log("[".date('r')."] Result: ".$person['cn;lang-cs']['0']." | ".$phone." | ".$person['preferredemail']['0']."\n",3,"./flex.log");
    }
}
print "</rows>";

Pokud vám všechno funguje v Flex builderu, stačí dát Project -> Export Release Build a vytvořit AIR soubor, který je nainstalovatelný jako desktopová aplikace.

Závěr

Přijde mi to rozhodně jednodušší než PHP-GTK. Jednoduchá aplikace, kterou používám denně, obdobných aplikací jsou dnes desítky a nejlepší mi přijde, že se dá udělat pěkné rozhraní k online službě v PHP a nedá to moc práce a na straně PHP není žádná práce navíc. Vlastní tvorba GUI dá zabrat podle mě všude.

Categories: adobe, adobe air, flex, php Tags:
  • abtris
    Přesně tak. Je to prostě desktopové rozhraní ke standardní službě, která vyhledává v kontaktech. Rozdíl je v tom, že nemusím mít puštěný browser a hlavně výsledky zůstavají uložené. Až budu mít chvíli času udělám ukázkouvou aplikaci pro hledání přes Live Search.
  • Callo
    Jestli sem vse dobre pochopil (o AIR sem tu u vas cetl dnes poprve) vase desktopova aplikace hleda na serveru a vraci to vysledky na desktop do te aplikace?
  • abtris
    U mě když to vkládám přes web tak to převede automaticky. Jen když používám Live Writer tak se to neudělá, budu na to muset dávat pozor.
  • abtris
    Toho jsem si nevšiml, je to už snad opravené. Jedině mě napadlo převést všechny elementy na HTML safe např. v PSPadu, i když to není asi elegantní řešení.
  • Klasika WP, nevíte jak toto eliminovat také by se mi to hodilo.
  • Pochopitelně se to sežralo a převedlo i v komentáři :-).
  • Zdá se, že ti něco ve článku sežralo XML značky. Navíc jsou špatně uvozovky, takže místo:

    print "";

    je v textu zcela nepoužitelné:

    print “”;
  • abtris
    Není problém, dal jsem to na http://ladislav.prskavec.net/download/AirSSU.txt. Ale tato verze se po zavření minimalizuje do systray a to přidalo spoustu kódu navíc, tak to ignorujte nebo použijte.
  • Tak jsem si po tomto článku stáhl Flexi Buildra a zajímalo by mě kde si můžu nastavit mx:HTTPService, respektive nemohl byste dát ke stažení zdrojový kód vaší aplikace?

    Děkuji
blog comments powered by Disqus

Switch to our mobile site