Einzelnen Beitrag anzeigen
Alt 28.10.2008, 17:16  
dr.e.
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo KarlEgon,

wenn ich das richtig sehe, sollte die Anforderung also mit ein paar Templates und DocumentController, die die Ausgabelogik kapseln zu erschlagen sein. Weitere "includes" in Templates können dabei ganz einfach mit dem <core:importdesign /> erledigt werden. Zur Gestaltung von wiederverwendbaren Elementen kannst du das <html:template />-Tag nehmen. Dieses steht im APF-DOM-Model im DocumentController (=MVC-Controller) dann als eigenes Objekt zur Verfügung und kann entsprechend genutzt werden. Hier die relevanten Stellen in der Doku:

* Adventure PHP Framework - Standard TagLibs
* Adventure PHP Framework - Standard TagLibs

Falls eine Ausgabe von Objekten in einer Liste direkt stattfinden kann, ist der Iterator-Tag (siehe Adventure PHP Framework - Standard TagLibs) eine ganz nette Alternative.

Deine Templates würden dann in etwa so aussehen:

main.html:
Code:
<html>
<head>
        <title>{$titel}</title>
    </head> 
    <body>
        <div id="header">
          <core:importdesign namespace="sites::karlegon::pres::template" template="header" />
        </div> 
        <div id="left">
          <core:importdesign namespace="sites::karlegon::pres::template" template="left" />
        </div> 
        <div id="right">
          <core:importdesign namespace="sites::karlegon::pres::template" template="right" />
        </div> 
        <div id="content">
          <core:importdesign namespace="sites::karlegon::pres::template" template="content" />
        </div> 
        <div id="footer">
          <core:importdesign namespace="sites::karlegon::pres::template" template="footer" />
        </div>
    </body>
</html>
Die jeweiligen "Subtemplates" enhalten dann die entsprechenden statischen oder dynamischen Inhalte. Für die Generierung der dynamischen Inhalte können dann DocumentController (siehe Adventure PHP Framework - Controller) genutzt werden. Ein expliziteres Beispiel kann ich dir basteln, wenn du mir weiteren Input gibst. Die Verschachtelungstiefe und Kombinationsmöglichkeiten bei den einzelnen Bereichen (Templates) ist uneingeschränkt, sprich du erhälst maximale Wiederverwendbarkeit.

Noch ein Controller-Beispiel zum Schluss: den Fertigstellungsgrad füllst du im APF so aus:

Template-Datei:
Code:
<@controller namespace="sites::karlegon::pres::controller" class="status_controller" file="status_controller" @>
<div id="status">

    Fertigstellungsgrad: <html:placeholder name="ready"/> %

</div>
Controller-Datei:
PHP-Code:
class status_controller extends baseController
{
   function 
transformContent(){
      
$this->setPlaceHolder('ready',20);   
   }

Um dein Haupt-Template ausgeben zu können brauchst du noch eine Bootstrap-Datei. Diese halt folgende Gestalt:

PHP-Code:
include_once('./apps/core/pagecontroller/pagecontroller.php');
$Page = new Page('helloworld');
$Page->loadDesign('sites::karlegon','pres/templates/main');
echo 
$Page->transform(); 
And now over to you!
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten