class my_document_controller extends base_controller {
public function my_document_controller(){
}
public function transformContent(){
}
}Des Weiteren verfügt der base_controller über alle Methoden der Klasse APFObject.
Über die bisher genannten Methoden besitzt jeder Document-Controller eine Referenz auf das Dokument im APF-DOM-Baum, für dessen Transformation er zuständig ist. Diese findet sich in der Klassen-Variable $this->__Document. Mit Hilfe dieser Referenz kann beispielsweise via
$this->__Document->getAttribute('foo')Aus Gründen der Einfachheit besitzt ein Document-Controller auch alle Attribute des aktuellen DOM-Knotens. Diese können in der Klassen-Variable $this->__Attributes eingesehen und abgerufen werden.
<@controller namespace="sites::apfdocupage::pres::documentcontroller" file="website_v1_controller"
class="website_v1_controller" @>
[..]
<meta name="DC.Date" content="<html:placeholder name="Date" />" />
<meta name="DC.Type" content="Text" />
<meta name="DC.Format" content="text/html" />
<meta name="DC.Identifier" content="Dipl.-Ing. (FH) Christian W. Achatz" />
<meta name="DC.Source" content="<html:placeholder name="URI" />" />
<meta name="DC.Language" content="de" />
<meta name="DC.Relation" content="<html:placeholder name="URI" />" />
[..]
<meta name="keywords" lang="de" content="PHP,Framework,PageController,FrontController,Pattern,[..]" />
<meta name="date" content="<html:placeholder name="Date" />" />
<meta name="robots" content="index,follow" />
<meta name="revisit-after" content="5 days" />
[..]class website_v1_controller extends base_controller {
function website_v1_controller(){
}
function transformContent(){
// Platzhalter-Tag "URI" setzen
$this->setPlaceHolder('URI',$_SERVER['REQUEST_URI']);
// Platzhalter-Tag "Date" setzen
$this->setPlaceHolder('Date',date('Y-m-d'));
}
}<@controller namespace="sites::apfdocupage::pres::documentcontroller" file="list_v1_controller"
class="list_v1_controller" @>
[..]
<html:placeholder name="List" />
<html:template name="ListHeader">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
<strong>ExampleList</strong>
</td>
</tr>
<template:placeholder name="TableElements" />
</table>
</html:template>
<html:template name="ListItem">
<tr>
<td>
<template:placeholder name="ItemValue" />
</td>
</tr>
</html:template>import('sites::demosite::biz','listLoader');
class list_v1_controller extends base_controller {
function list_v1_controller(){
}
function transformContent(){
// Liste in Platzhalter-Tag "List" einsetzen
$this->setPlaceHolder('List',$this->__buildList());
}
function __buildList(){
// listLoader erzeugen
$listLoader = &$this->__getServiceObject('sites::demosite::biz','listLoader');
// Liste laden
$List = $listLoader->loadList();
// HTML-Puffer initialisieren
$Buffer = (string)'';
// Referenz auf Header-Template holen
$Template__ListHeader = &$this->__getTemplate('ListHeader');
// Liste durchlaufen und Items generieren
foreach($List as $lKey => $lItem){
// Ausgabe für Item generieren
$Buffer .= $this->__buildListItem($lItem);
}
// Items in das Header-Template einsetzen
$Template__ListHeader->setPlaceHolder('TableElements',$Buffer);
// Template transformieren und zurückgeben
return $Template__ListHeader->transformTemplate();
}
function __buildListItem(&$listItem){
// Referenz auf ListItem-Template holen
$Template__ListItem = &$this->__getTemplate('ListItem');
// Inhalt des Templates setzen
$Template__ListItem->setPlaceHolder('ItemValue',$listItem->get('ListContent'));
// Template transformieren und zurückgeben
return $Template__ListItem->transformTemplate();
}
}