am 12. Mai 2009
Ich werde euch heute mal anhand eines kleinen Beispiels zeigen, wie man das Zend Framework und AJAX schnell und einfach verbinden kann. Ich habe dazu das ZF in der Version 1.7 und das Javascript Framework jQuery in der Version 1.3.2 verwendet.Ich gehe einmal davon aus das Grundkenntnisse im ZF vorhanden sind, falls nicht gibt es schon genügend Tutorials im Internet und eine sehr gelungene Doku von Zend selbst. Da jQuery alles andere als kompliziert ist, aber dabei trotzdem wirklich viele Möglichkeiten bietet, werde ich kurz einige Basisfunktionen und die Handhabung erklären, der Rest kann ebenfalls in der übersichtlichen und einfachen Doku nachgelesen werden.
ZF
Okay, kommen wir einmal zum ZF. In meinem Beispiel werde ich zwei Controller verwenden. Der erste dient zur Darstellung einer div-box und der zweite gibt einen kleinen Text aus. Nichts besonderes eigentlich. Ich gehe einfach mal davon aus das bereits ein Projektverzeichnis mit dem ZF eingerichtet und eine bootstrapper Datei erstellt wurde.
Der erste Controller ist der Controller show. Hier finden wir eine leere showAction die selbst nichts tut, sondern lediglich den view öffnet. In dem View befindet sich dann der Grundaufbau einer HTML Seite.
showController.php
<?php
class showController extends Zend_Controller_Action
{
function showAction()
{
// Ruft automatisch den View "show" auf
}
}
show.phtml
<html>
<head>
<title>Beispiel</title>
</head>
<body>
<div id="textBox"></div>
</body>
</html>
Der zweite Controller gibt lediglich einen Text aus. Ich nenne ihn einfach mal “output”. Das ganze werde ich ohne eine View erledigen, dass ist für einen kleinen Einzeiler einfacher.
outputController.php
<?php
class outputController extends Zend_Controller_Action
{
function outputAction()
{
$this->_helper-> viewRenderer-> setNoRender();
echo "Das ist meine Ausgabe!";
}
}
Das ist auch schon alles was ich vom ZF benötige. Wir werde später noch Änderungen in der View der showAction machen, damit wir jQuery laden und den Text laden können.
jQuery
jQuery ist meiner Meinung nach ein wirklich erstaunliches Framework. Ich habe vom allgemeinen Funktionsumfang noch keinen direkten Vergleich mit Scriptaculous bzw. Prototype oder MooTools gemacht, aber ich vermute mal das jQuery im allgemeinen eher weniger Funktionen enthält. Was aber wirklich toll an dem Framework ist, ist der Zugriff auf die HTML Elemente. So kann man mithilfe von jQuery so ziemlich jeden CSS Ausdruck zum auswählen eines oder mehrerer Elemente nutzen um Eigenschaften zuzuweisen o.Ä. So ist z.B. eine Abfrage aller input Felder vom Typ Text so möglich:
var elem = $("input ['type=text']");
So wird das lästige “document.getElementBy…” ersetzt und extrem vereinfacht. Ein weiterer Punkt, und den werden wir jetzt auch nutzen, ist die Vereinfachung eines “AJAX Requests”. jQuery bietet dabei verschiedenste Möglichkeiten. Ich werde heute einmal $.post verwenden. Hier dazu die komplette Funktion die benötigt wird um ein AJAX Request abzufeuern und das Ergebnis – den Text – in die div zu schreiben:
function getText()
{
$.post("output/output",
function(response) {
$("#textBox").text(response);
},
"text"
);
}
Diese Funktion muss nun nur noch über ein Link aufgerufen werden. Mitsamt der Einbindung der Funktion, der jQuery Datei und des Links sieht die show View dann so aus:
show.phtml
<html>
<head>
<title>Beispiel</title>
<script src="jQuery.js" type="text/javascript" />
<script type="text/javascript">
function getText()
{
$.post("output/output",
function(response) {
$("#textBox").text(response);
},
"text"
);
}
</script>
</head>
<body>
<div id="textBox"></div><br />
<a onclick="getText();">loadText</a>
</body>
</html>
So, das wars dann auch schon. Auf diesem Wege kann man dann auch über das ZF Daten aus einer Datenbank abrufen, Daten speichern oder in jeglicher Art weiterverarbeiten. Ich hoffe das ich das ganze relativ verständlich erklärt habe und freue mich über eure Kommentare