Template dynamisch implementieren

Das Forum soll der Ablage von Lösungen für immer wieder auftauchende Problemstellungen dienen. // This forum contains solutions to problems that frequently occur.
Antworten
Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Template dynamisch implementieren

Beitrag von dave » 22.02.2011, 19:07:25

Hallo zusammen :).

Ich habe mich nun mehr oder weniger erfolgreich ins APF eingearbeitet und einen Login mit dem Usermanagament erstellt. Wahnsinn! ;)


Ich möchte nun dynamisch Templates aus dem Controller heraus einbinden.

Mein Problem ist:
Ich befinde mich Standardmässig im Template-Verzeichnis des Moduls, möchte nun aber im Controller ein Template meiner Site einbinden. Wie mache ich das?

Hier noch ein bisschen Code bzw. meine Verzeichnisstruktur:

Usermanagement:

Code: Alles auswählen

/apps/modules/usermanagement/pres/templates/


Meine Templates:

Code: Alles auswählen

/apps/sites/design1/pres/templates/



Einbinden des Templates

Code: Alles auswählen

$menu = &$this->__getTemplate('spezialmenu');


Ich kann ja nur den Dateinamen (spezialmenu) angeben. Wie übergebe ich aber den neuen Pfad?

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Template dynamisch implementieren

Beitrag von Screeze » 22.02.2011, 19:11:42

Ich möchte nun dynamisch Templates aus dem Controller heraus einbinden.

Das geht sorum nicht im APF.
Du bindest templates ein - die den dazugehörigen Controller einbinden, nicht umgekehrt.

$menu = &$this->__getTemplate('spezialmenu');

Ich kann ja nur den Dateinamen (spezialmenu) angeben. Wie übergebe ich aber den neuen Pfad?


Hier bindest du auch keine neue Datei ein, sondern ein template innerhalb der templatedatei, von der der controller geladen wurde.

Villeicht beschreibst du nochmal genauer was du vorhast?

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Template dynamisch implementieren

Beitrag von dave » 22.02.2011, 19:25:32

Nachdem der User sich erfolgreich eingeloggt hat, soll nicht mehr das Login-Formular erscheinen sondern ein Benutzermenü.

Dieses Benutzermenü soll aus diversen Links bestehen:
  • Profilinformationen
  • Nachrichten
  • ... usw. ...
plus einiger weiterführender Links, je nach Benutzergruppe, Rolle und Recht ;).

Da ich mich bei der Bereitstellung des Login im Usermangement-Modul befinde müsste ich dort auch mein neuen Menü-Template hinterlegen. Dies möchte ich aber der Ordnung halber, da das nicht mehr zum eigentlichen Usermanagement gehört, in mein Template-Ordner meines Designs hinterlegen.

Ich hoffe, es ist verständlich ;)

Wie kann ich das nun einbinden?

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Template dynamisch implementieren

Beitrag von Screeze » 22.02.2011, 19:33:28

Du hast zu jedem Zeitpunkt die Möglichkeit ein neues Page() objekt zu erzeugen, welches ein neues template(+ dessen controller wenn vorhanden) läd und transformieren kann.
Jedoch würde ich hier eine Ebene höher ansetzen, nämlich in deinem Basistemplate.
Hier würde ich im controller prüfen ob der user eingeloggt ist, wenn nicht, den login anzeigen, wenn doch, das menü anzeigen. Wenn der user sich gerade neu einloggt, würde ich vom login-controller einen header-redirect machen, der auf das Basistemplate zeigt wieder, somit hast du wieder die oben beschriebene Trennung.

Ein neues Template bindest du entweder über entsprechende taglibs (z.b. die *:importdesign taglibs) oder im controller oder sonstwo mit einem Page objekt ein:

Code: Alles auswählen


$page 
= new Page();
$page->setContext($this->getContext());
$page->setLanguage($this->getLanguage()); // kannst du weglassen wenn deine Anwendung nur einsprachig ist
$page->loadDesign('sites::pres::templates','Menu_whatever'); // hier namespace (pfad) und name des einzubindenen templates anpassen

$html $page->transform();
 

jetzt hast du in $html den html-code des transformierten templates, den du z.b. per echo ausgeben kannst.

Hilft dir das?

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Template dynamisch implementieren

Beitrag von Screeze » 22.02.2011, 19:36:03

Evtl. hilft dir auch dieser Thread ca. ab dem verlinkten post, denn dort wird ein ähnlicher Aufbau beschrieben:

viewtopic.php?f=6&t=575#p5301

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Template dynamisch implementieren

Beitrag von dave » 22.02.2011, 19:44:06

Jup, genau das hilft mir schonmal!

Den anderen Thread werde ich nochmals genau studieren.

Super, vielen Dank, bis die Tage :)


Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast