Seite 1 von 1

[erledigt]template system

Verfasst: 03.12.2006 10:27
von Ambience
Hallo, ich schreibe mal wieder an meinem Templatesystem weiter..

Nun wollte ich so eine funktion einbauen das templates als variable zugewiesen werden können, also sowas:

Code: Alles auswählen

$template->assign_var_from_handle('VARIABLE', 'header');
header ist dabei der handle für overall_header.html bei mir

und im tpl soll man sowas benutzen können:

Code: Alles auswählen

{VARIABLE}
nur leider funktioniert meine funktion nicht so richtig, und ich weiß nicht was da genau falsch läuft.

nun aufrufen tu ich das ganze so:

Code: Alles auswählen

<?php

include('includes/template.php');
$template = new Template('simpleGreen');

$template->set_filenames(array('ov' => 'overall_header.html', 'po' => 'select_color.html'));

$template->assign_var_from_handle('SITE', 'po');

$template->display('ov');
?>
die template.php also meine template class hab ich mal auf ftp geladen da diese sonst zu groß wäre.

Template class

es wird nix zugewiesen, also {SITE} bleibt in diesem fall leer und wird einfach durch das template system mit '' ersetzt.

Wenn sich jemand meine Klasse mal angucken könnte, wäre ich sehr dankbar.

Verfasst: 03.12.2006 14:00
von Ambience
es ist dringend. bitte :D

Verfasst: 03.12.2006 14:07
von Jan500
Bumpen ist erst nach 24h erlaubt!
KB:knigge

Verfasst: 03.12.2006 14:29
von Ambience
oh sorry.. ist aber wirklich dringend. *seh das jetzt nicht als bump sondern als antwort*

Verfasst: 03.12.2006 14:34
von BB-BF-BM
Du musst einfach nur suchen, wo der Fehler liegt:
zuerst

Code: Alles auswählen

$template->display('po');
, da das funktioniert in der Methode assign_var_from_handle:

Code: Alles auswählen

     echo $_str;
     $this->assign($varname, $_str);
, da $_str leer ist,

Code: Alles auswählen

     echo $code;
     $this->_eval($code);
der Code ist in ordnung; also muss der Fehler beim $this->_eval($code) liegen:
nimm stattdessen einfach

Code: Alles auswählen

     eval($code);
Damit gehts (jedenfalls bei mir)

Warum hast du überhaupt die Methode _eval() erstellt?

Verfasst: 03.12.2006 14:39
von Ambience
hab ich mir vom smarty template system abgeguckt.

Kann es sein das es an dem return eval($code); liegt? muss das return evtl. weg?

edit: hmm ne, geht dann auch nciht, wenn das return weg ist. Auf jedenfall funktioniert es, und ich hab die _eval function weggelassen. Vielen Dank.

Verfasst: 03.12.2006 14:59
von BB-BF-BM
es liegt daran, dass die Variable $_str nur in der Methode $template->_eval verfügbar ist. Sie wird nicht wieder an die ursprüngliche Methode ($template->assign_var_from_handle) übergeben.

Verfasst: 03.12.2006 17:04
von Miriam
Und wie sieht nun das fertige Class-Script aus? Das würde mich interessieren. :)