Leichtgewicht

Teil 4: Serie: PHP-Frameworks Teil 3 - Seagull

In der Template-Seite sehen Sie, dass nur zwei Spalten ausgegeben werden. Dies können Sie gleich ändern. Hier sehen Sie den Code mit den Änderungen fett hervorgehoben:

<table class="wide"><tr><td colspan="3"><input type="button" onclick="javascript:document.location.href='{makeUrl(#add#,#list#,#frameworks#)}'" value="{translate(#Add entry#)}" /></td></tr><tr><th>id</th><th>name</th><th>licence</th><th>action</th></tr><tr class="{switchRowClass()}" flexy:
foreach="aPagedData[data],key,aValue"><td nowrap>{aValue[id]}</td><td nowrap>{aValue[name]}</td><td nowrap>{aValue[licence_id]}</td><td width="10%" nowrap><a href="{makeUrl(#edit#,#list#,
#frameworks#,aPagedData[data],#frmListID|list_id#,key)}" />
[{translate(#edit#)}]</a><img src="{webRoot}/themes/
default_admin/images/16/action_edit1.gif" alt="edit" /></td></tr><tr><td colspan="4">{translate(
#With selected message(s)#)}:<input type="submit" name="delete"
value="{translate(#Delete#)}" onclick="return confirmSubmit('message', 'list_delete_confirm')" /></td></tr></table>

Relationen

Nun erscheint die dritte Spalte. Allerdings ist das noch nicht optimal, denn die Lizenz ist bisher nur mit der ID hinterlegt. Es gibt aber eine eigene Tabelle licences für die Lizenzen, die über die ID verknüpft ist:

CREATE TABLE IF NOT EXISTS
`licences` (`licence_id` int(11) NOT NULL,`licence_name` varchar(255) collate utf8_unicode_ci NOT NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `licences` (`licence_id`,
` licence_name`) VALUES(1, 'MIT'),(2, 'LGPL'),(3, 'New BSD License'),(4, 'BSD');

Um diese Tabelle einzusetzen, müssen Sie sie zuerst als Tabellenalias registrieren. Dazu gibt es die Datei tableAliases.ini im data-Verzeichnis. Fügen Sie hier die licences-Tabelle an:

list = list
licences = licences

Damit die Änderungen übernommen werden, müssen Sie das Modul im Modul Manager im Backend neu laden. Als Nächstes kümmern wir uns um das Auslesen in classes/ListMgr.php.

Hier muss beim Auslesen auch die Lizenzen-Tabelle berücksichtigt werden. Hierzu verwenden Sie einen normalen JOIN. Die Tabellennamen sind über die tableAliases.ini in der Konfiguration hinterlegt. Sie befinden sich dort im Array table:

$query = " SELECT a.id, a.name,
b.licence_nameFROM {$this->conf['table']['list']} aINNER JOIN {$this->conf['table']['licences']} bON a.licence_id = b.licence_idORDER BY a.id";

Als Letztes muss das Template angepasst werden. Hier wird in der dritten Spalte nun auf den Lizenznamen zugegriffen:

<td nowrap>{aValue[id]}</td><td nowrap>{aValue[name]}</td><td nowrap>{aValue[licence_name]}</td>

Nach dem gleichen Muster müssen nun noch die Bearbeitungsmöglichkeiten geändert werden. Das Template ist listEdit.html, die Funktionen finden sich im ListMgr.

Fazit

Seagull besticht vor allem durch enge PEAR-Integration und die ausgereiften CMS-Funktionen. Die Möwe eignet sich damit für Entwickler, die die Arbeit mit PEAR bereits gewohnt sind und für alle, die sich ohne allzu viel Coding ein einfaches CMS wünschen.

PHP-Frameworks Teil III - Seagull

© Archiv

Fertig: Seagull stellt nun auch die Lizenzen korrekt dar.

Komfortfunktionen wie automatische Konfiguration sind ebenfalls recht angenehm, wenn sie auch nicht in allen Punkten mit der Konkurrenz mithalten können (beispielsweise Datenbankrelationen). Das Wiki enthält ausreichend Informationen für den Einstieg (), insofern also eine durchaus elegante Möwe, mit der Projekte erfolgreich abheben können.

Mehr zum Thema

HTML5: Quick Reference Guide
Ratgeber: "HTML5"

Die wichtigsten Tags auf einen Blick: In unserem praktischen Arbeitsblatt finden Sie einen wertvollen Begleiter für die Umstellung Ihrer Webprojekte…
internet, webdesign, google, content, ranking, seo, suchmaschine
Ratgeber: Urheberrecht

Einzigartige Inhalte bieten Lesern Mehrwert und sind ein wichtiges Qualitätsmerkmal. Ärgerlich, wenn sich jemand durch Kopieren an fremden Ergebnissen…
Die besten HTML5-Tipps
Neue Tipps & Tricks für blitz.io

Wer die Leistung einer Applikation ermitteln möchte, braucht keine Skripte zu schreiben, sondern kann einen der zahlreichen Online-Dienste einspannen.…
image.jpg
Ratgeber: Webentwicklung

Die clientseitige Javascript-Entwicklung bietet fast keine Entwicklungsumgebungen und auch keine vernünftigen Werkzeuge zur Fehlersuche. Eine der…
internet, webdesign, meteor, webapplikationen
Ratgeber

Mit Meteor sollen Entwickler in kurzer Zeit Umgebungen für Webapplikationen erstellen können, ohne sich um lästige Details kümmern zu müssen. Wir…