Templates mit der Ext Library
Nicht immer will man Daten in einem Grid darstellen, oder man braucht für einen Datensatz einen Detailview. Um das zu realisieren, benutzt man Templates. In diesem Tutorial will ich euchzeigen, wie einfach diese Templates zu benutzen sind.
Voraussetzungen: Kenntnisse in HTML, CSS, Javascript, MySQL und PHP
Wir benötigen für dieses Tutorial einen lokalen Webserver (XAMPP oder WAMP) mit PHP 5.2 und natürlich die Ext Library, welche ihr hier downloaden könnt.
Es ist sinnvoll, sich ebenfalls unser Tutorial Paging Grid mit der Ext Library anzuschauen, da wir die selben Daten verwenden wollen.
Der HTML Teil
Wir legen eine leere Html Datei an und nennen sie template.html. In den Head Bereich binden wir die erforderlichen Ext Scripte ein.
<link rel="stylesheet" type="text/css" href="../ext-1.0/resources/css/ext-all.css" />
<script type="text/javascript" src="../ext-1.0/adapter/yui/yui-utilities.js"></script>
<script type="text/javascript" src="../ext-1.0/adapter/yui/ext-yui-adapter.js"></script>
<script type="text/javascript" src="../ext-1.0/ext-all-debug.js"></script>
<script type="text/javascript" src="template.js"></script>
Die Pfadangaben der Scripte müßt ihr natürlich euren Gegebenheiten anpassen. Neu ist jetzt auch, das die yui-utilities und die ext-yui-adapter in dem Verzeichnis adapter/yui/ liegen.
Wie immer brauchen wir einen Platzhalter für unser Template im Body der Html Seite:
<h1>Ext Template Tutorial</h1>
<div id="myTemplate"></div>
Ein paar Styleangaben fügen wir noch im Head Bereich ein, damit es ein bischen netter aussieht.
<style type="text/css">
#myTemplate{
margin:20px;
padding:5px;
border:2px solid rgb(178, 208, 247);
width:200px;
}
h1{margin:20px; color:rgb(8, 55, 114);}
p, a{ color:rgb(8, 55, 114); line-height: 25px;}
a:hover{color:rgb(223, 55, 55);}
ul{margin:5px; border-bottom:1px solid rgb(178, 208, 247);}
</style>
Damit ist unsere Html Seite fertig.
Das Javascript
Wir legen eine leere Datei an und nennen sie template.js. In die kommt wieder die Ext.onReady Funktion, die ja aus den anderen Tutorials bekannt sein sollte:
Ext.onReady(function(){
alert('You have Ext configured correctly!');
});
Wenn du nun beim Aufruf deiner template.html ein Alert Fenster aufgeht, sind alle Pfadangaben zur den Ext Bibliotheken in Ordnung.
Jetzt wollen wir ein einfaches Template erstellen. Ersetze die alert Zeile mit folgendem Code:
var html = '<p><a href="{url}">{urltext}</a></p>';
var tpl = new Ext.Template(html);
tpl.compile();
tpl.append('myTemplate', {
url: 'http://www.extjs.com',
urltext: 'Ext Website'
});
tpl.append('myTemplate', {
url: 'http://www.jackslocum.com',
urltext: 'Jack Slocums Blog'
});
Nun sollte eure Html Seite so aussehen:
In der Variable html haben wir die Html Struktur festgelegt und danach ein Template tpl erzeugt. tpl.append bindet die Daten an unser myTemplate Div. Nun wollen wir aber unser Template dynamisch füllen.
Die PHP Datei
Ich gehe davon aus, daß du das Tutorial Paging Grid mit der Ext Library durchgearbeitet hast, da wir die selben daten verwenden werden. Wenn nicht, schaue dir den Teil an, in dem beschrieben wird, wie wir an die Daten gelangen.
Wir erzeugen eine leere Datei, fügen nachfolgenden Code ein und nennen sie template.php.
<?php
$db = mysql_connect("localhost", "user", "password")
or die("Connection Error: " . mysql_error());
mysql_select_db("someData") or die("bla bla ...");
$myfriends = array();
$result = mysql_query("SELECT name, zipcode, city, country
FROM friends
ORDER BY name
LIMIT 0, 20");
while ($obj = mysql_fetch_object($result)) {
$myFriends[] = $obj;
}
echo '{"myFriends":'.json_encode($myFriends).'}';
?>
Der Code sollte für jeden verständlich sein.
Template mit Json View
Da wir nun Daten im Json Format geliefert bekommen, müssen wir eine Komponente aus der Ext vewenden, mit der wir diese Daten verarbeiten können, den JsonView.
Das template müssen wir natürlich auch unseren neuen Daten anpassen:
Ext.onReady(function(){
var html =
'<ul>' +
'<li><b>{name}</b></li>' +
'<li>{zipcode} {city}</li>' +
'<li>{country}</li>' +
'</ul>';
var tpl = new Ext.Template(html);
tpl.compile();
var myView = new Ext.JsonView("myTemplate", tpl, {
jsonRoot: "myFriends"
});
myView.load({
url: 'template.php',
text: 'Loading Friends ...',
timeout: 50
});
});
So sollte nun euere Seite aussehen.
Diesmal wird der JsonView an unser Div gebunden. Er läd die template.php und verarbeitet die Json Daten.
Jetzt werdet ihr euch vielleicht fragen, wozu das Ganze? Das hätte ich ja auch mit PHP alleine geschafft.
Meistes werden Templates mit anderen Komponenten zusammen verwendet, zum Beispiel mit dem Grid. Ihr klickt eine Zeile im Grid an und es erscheint eine Detailansicht des Datensatzes.
Oder ihr baut ein Inputfeld über das Div und filtert die Datensätze beim Eintippen eines Buchstaben, ohne die Seite neu zu laden, da ja alle Datensätze im DOM vorhanden sind. Es ist lediglich euer Fantasie überlassen, was ihr damit anstellt.
- Kategorie: Programmierung, Tutorials
- Tags: ajax, code, css, ext, framework, grid, html, javascript, json, mysql, php, tutorial
- Kommentar-Feed | Trackback URL
- Gelesen: 7556 | Heute: 4
- einen Kommentar schreiben
1 Kommentar

Hi, ich finde den Template sehr wichtig auch wenn ich die noch nicht verstanden habe. Ich möchte gerne die immer einsetzen, wenn ich mit dem Framework arbeite. Dieses Beispiel mit dem Auto, hast du bitte das Code. Kannst du mir es bitter per emil versenden.
Danke