 | |
17.01.2006, 17:27
| Nach oben
#1 | | Daniel Golowin
Registriert seit: 17.11.2005 Ort: Rheinland-Pfalz, Osthofen
Beiträge: 130
| Problem bei Verarbeitung von Templates (Eigene Klassen)
Liebe Forengemeinschaft,
nach dem ich schon hier viel tolles gelsen habe, bin ich einfach begeistert über dieses Forum! Niergends sooooviel Profissionalität gelsen!!!
Nun ich hab leider ein Problem und komme nicht dahinter was es sein kann!
Ich hab mir vorgenommen eine Templates Verabeitungs Classe zu schreiben, der nur ein Start-Templatename übergen werden soll und den rest soll bitte schön diese doch aus dem Template herauslesen!
Nun die Idee habe ich schon lange, alerding hapert es etwas mit der realisierung. Als inspiration habe ich mir die tollen Tutorials von hier genommen.
Diese hier: Ein eigenes Templatesystem schreiben von Corvin Gröning [php] Ein einfaches Template-System von MrNiceGuy
DANKE Leute!!!
Ich hab versuch aus diesen beiden Tutorials, wie ich meine, die Vorteile in eine Classe zusammen zu fassen.
Hier ist sie: Korrigiert! PHP-Code: /* * Template Verarbeitung * * Enthält Methoden zum verarbeiten der Templates * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
class templateVerarbeitung { //###################################################################### // Variablen der Klasse //######################################################################
/* * Der linke Delimiter für einen Platzhalter * * @access public * @var string */ protected $delimiter_left = '{'; /* * Der rechte Delimiter für einen Platzhalter * * @access public * @var string */ protected $delimiter_right = '}';
/* * Inhalt des Templates. * * @access protected * @var array */ protected $template = array(); /* * Objekt für den Datenbankzugriff. * * @access protected * @var object */ protected $obj_db = ""; /* * Name der Tabelle mit Templates. * * @access protected * @var string */ protected $tpl_table = ""; /* * Pfad der Funktionsdateien. * * @access protected * @var string */ protected $dir_functions = ""; /* * Dateiendungen der Funktionsdateien. * * @access protected * @var string */ protected $file_endung = ""; /** * Konfigurations-Status der Klasse. * * @access protected * @var boolean */ protected $config = false;
//###################################################################### // Methoden der Klasse //######################################################################
/* * Klasse konfigurieren * * @access public * @param object $obj_db Objekt für den Datenbankzugriff * @param string $tpl_table Name der Tabelle mit Templates * @param string $dir_functions Pfad der Funktionsdateien * @param string $file_endung Dateiendung der Funktionsdateien (Standart *.php) * @return boolean */ public function config(&$obj_db, $tpl_table, $dir_functions, $file_endung = ".php") { // Prüfen ob Variablen mit Werten gefüllt wurden if (!empty ($obj_db) && !empty ($tpl_table) && !empty ($dir_functions)) { $this->obj_db = $obj_db; $this->tpl_table = $tpl_table; $this->dir_functions = $dir_functions; $this->file_endung = $file_endung; $this->config = true; return true; } return false; } /* * Initiator der Klasse, starten der Abarbeitung * * @access protected * @param string $tpl_name Name des Templates * @return boolean */ public function init($tpl_name) { if ($this->config) { $this->lade_tpl($tpl_name); $this->ersetze_platzhalter($tpl_name); return true; } return false; }
/* * Template laden * * @access protected * @param string $tpl_name Name des Templates * @return boolean */ protected function lade_tpl($tpl_name) { if (isset($this->template[$tpl_name]) === true) { // Template wurde schon geladen return true; } else { // Template laden $this->obj_db->anfrage("SELECT template_inhalt FROM " . $this->tpl_table . " WHERE template_name = '" . $tpl_name . "'");
$tpl_daten = $this->obj_db->auslese(); // Template speichern $this->template[$tpl_name] = $tpl_daten['template_inhalt'][0]; return true; } } /* * Aufruffunktion zum ersetzen von Platzhalter * * @access protected * @param string $tpl_name Name des Templates * @return boolean */ protected function ersetze_platzhalter($tpl_name) { $this->ersetze_variable($tpl_name); $this->ersetze_array($tpl_name); $this->ersetze_template($tpl_name); $this->ersetze_file($tpl_name); $this->ersetze_function($tpl_name); return true; } /* * Platzhalter {$varname} ersetzen * * @access protected * @param string $tpl_name Name des Templates * @return boolean */ protected function ersetze_variable($tpl_name) { $this->template[$tpl_name] = preg_replace_callback('/' . $this->delimiter_left . '(\$(.*))' . $this->delimiter_right . '/isU', create_function('$treffer', 'return $GLOBALS[$treffer[2]];'), $this->template[$tpl_name]); return true; } /* * Platzhalter {array="arrayname[indexname]"} ersetzen * * @access protected * @param string $tpl_name Name des Templates * @return boolean */ protected function ersetze_array($tpl_name) { while (preg_match('/' . $this->delimiter_left . 'array=\"(.*)\[(.*)\]\"' . $this->delimiter_right . '/isU', $this->template[$tpl_name], $treffer)) { // Array bereitstellen $array =& $GLOBALS[$treffer[1]]; $this->template[$tpl_name] = preg_replace('/' . $this->delimiter_left . 'array=\"' . $treffer[1] . '\[' . $treffer[2] . '\]\"' . $this->delimiter_right . '/isUe', '$array[$treffer[2]]', $this->template[$tpl_name]); }
return true; } /* * Platzhalter {template="templatename"} ersetzen * * @access protected * @param string $tpl_name Name des Templates * @return boolean */ protected function ersetze_template($tpl_name) { while (preg_match('/' . $this->delimiter_left . 'template=\"(.*)\"' . $this->delimiter_right . '/isU', $this->template[$tpl_name], $treffer)) { // Template laden und vorbereiten $this->lade_tpl($treffer[1]); $this->ersetze_platzhalter($treffer[1]); $this->template[$tpl_name] = preg_replace('/' . $this->delimiter_left . 'template=\"' . $treffer[1] . '\"' . $this->delimiter_right . '/isUe', '$this->template[$treffer[1]]', $this->template[$tpl_name]); }
return true; } /* * Platzhalter {file="dateipfad"} ersetzen * * @access protected * @param string $tpl_name Name des Templates * @return boolean */ protected function ersetze_file($tpl_name) { // Datei-Inhalt einlesen und einfügen $this->template[$tpl_name] = preg_replace('/' . $this->delimiter_left . 'file=\"((.*)\.(.*))\"' . $this->delimiter_right . '/isUe', 'file_get_contents(ROOT_DIR . "/$2.$3")', $this->template[$tpl_name]);
return true; } /* * Platzhalter {function="funktionname()"} ersetzen * * @access protected * @param string $tpl_name Name des Templates * @return boolean */ protected function ersetze_function($tpl_name) { while (preg_match('/' . $this->delimiter_left . 'function=\"(.*)\((.*)\)\"' . $this->delimiter_right . '/isU', $this->template[$tpl_name], $treffer)) { // Prüfen ob die Funktion schon vorhanden ist und ob die Datei existiert if (!function_exists($treffer[1]) && file_exists($this->dir_functions . $treffer[1] . $this->file_endung)) { // Laden der Datei mit der Funktion include_once($this->dir_functions . $treffer[1] . $this->file_endung); } // Wenn die Funktion vorhanden ist, wird diese ausgeführt if (function_exists($treffer[1])) { $this->template[$tpl_name] = preg_replace('/' . $this->delimiter_left . 'function=\"' . $treffer[1] . '\(' . $treffer[2] . '\)\"' . $this->delimiter_right . '/isUe', '' . $treffer[1] . '(' . $treffer[2] .')', $this->template[$tpl_name]); } } return true; }
/* * Template ausgeben * * @access public * @param string $tpl_name Name des Templates * @return boolean */ public function show($tpl_name) { echo $this->template[$tpl_name]; return true; } }
Meine Vermutung ist, dass es an dem übergebendem Objekt liegt! Scheinbar funktioniert es nicht so wie ich es mir vorgestellt hatte!
Hier noch die Datenbankzugriff Classe: PHP-Code: /* * Datenbankzugriff Klasse (MySQL) * * Enthält Methoden zum arbeiten mit der Datenbank * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
class dbMysql { //###################################################################### // Variablen der Klasse //######################################################################
/* * Datenbank Servername. * * @access protected * @var string */ protected $db_host; /* * Datenbank Benutzer. * * @access protected * @var string */ protected $db_user; /* * Datenbank Passwort. * * @access protected * @var string */ protected $db_psw; /* * Datenbank Name. * * @access protected * @var string */ protected $db_name; /* * Tabellen Präfix. * * @access protected * @var string */ protected $tb_prfx;
/* * Datenbank Verbindungskennung. * * @access protected * @var string */ protected $db_verbindung = false; /* * Ergebnis des letzten SQL-Befehl. * * @access protected * @var string */ protected $sql_query = false; /* * Anzahl der betroffenen Datensätze. * * @access public * @var string */ public $ds_anzahl = false;
//###################################################################### // Methoden der Klasse //######################################################################
/* * Klasse konfigurieren * * @access public * @param string $db_host Datenbank Servername * @param string $db_user Datenbank Benutzer * @param string $db_psw Datenbank Passwort * @param string $db_name Datenbank Name * @param string $tb_prfx Tabellen Präfix * @return boolean */ public function config($db_host, $db_user, $db_psw, $db_name, $tb_prfx = "") { // Prüfen ob Variablen mit Werten gefüllt wurden if (!empty ($db_host) && !empty ($db_user) && !empty ($db_psw) && !empty ($db_name)) { $this->db_host = $db_host; $this->db_user = $db_user; $this->db_psw = $db_psw; $this->db_name = $db_name; $this->tb_prfx = $tb_prfx; return true; } return false; } /* * Stellt eine Verbindung zu der Datenbank her * * @access public */ public function verbinde() { $this->db_verbindung = mysql_connect($this->db_host, $this->db_user, $this->db_psw );
// Wählt die Datenbank aus $this->auswaehle(); } /* * Auswahl einer Datenbank * * @access public * @param string $db_name Datenbank Name */ public function auswaehle($db_name = NULL) { if (!$db_name) { $db_name = $this->db_name; }
mysql_select_db($db_name, $this->db_verbindung); } /* * Beendet die Datenbank Verbindung * * @access public */ public function trenne() { mysql_close($this->db_verbindung); } /* * Sendet eine Anfrage an die Datenbank * * @access public * @param string $sql SQL Befehl */ public function anfrage($sql) { $this->sql_query = mysql_query($sql, $this->db_verbindung); // Speichert die Anzahl der Betroffenen Datensätze if (stristr($sql, "SELECT") !== false) { $this->ds_anzahl = mysql_num_rows($this->sql_query); } else { $this->ds_anzahl = mysql_affected_rows(); } } /* * Stellt ein Array mit Informationen bereit aus dem Ergebnis der zuvor * gestellten Datenbank Anfrage * * @access public * @return array Datensätze aus der Datenbank * boolean */ public function auslese() { if ($this->sql_query) { // Liest eine Zeile aus for ($i = 0; $dt_zeile = mysql_fetch_array($this->sql_query); $i++) { // Läuft die Spalten durch foreach ($dt_zeile as $spalte => $inhalt) { // Erstellen der Datensätze Array's $daten[$spalte][$i] = $inhalt; } } // Übergibt den Datensätze Array return $daten; } else { // Gibt FALSE zurück falls keine Anfrage vorher stattgefunden hat return false; } } }
Die Fehlermeldungen die ich bekomme sind folgende: Code: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ...\class_dbMysql.php on line 183
Notice: Undefined index: templatename in ...\class_templateVerarbeitung.php on line 205 Ich bin ratlos!
Nach der zweiten Meldung, wird kein Template gespeichert! Obwohl der teil des Codes ausgeführt wird!
Und in der Warnung steht, dass kein richtiges Ergebnis aus der Datenbank anfrage zu stande kommt!
Wenn noch irgendwelche Erleuterungen notwedigt sind, einfach schreiben!
Könnt ihr mir weiter helfen?
Geändert von Jann Hendrik (03.07.2008 um 10:35 Uhr)
|
| |
17.01.2006, 17:32
| Nach oben
#2 | | Erfahrener Benutzer
Registriert seit: 02.12.2004 Ort: Koblenz
Beiträge: 4.794
|
Bau mal ein mysql_error() ein.
Dann wirst Du sehen woran es liegt  .
<offtopic> Zitat: |
Zitat von dago Liebe Forengemeinschaft,
nach dem ich schon hier viel tolles gelsen habe, bin ich einfach begeistert über dieses Forum! Niergends sooooviel Profissionalität gelsen!!! | Danke. Da lacht mein Herz  .
</offtopic>
|
| |
17.01.2006, 17:36
| Nach oben
#3 | | Daniel Golowin
Registriert seit: 17.11.2005 Ort: Rheinland-Pfalz, Osthofen
Beiträge: 130
|
Hmm, dran hab ich noch nicht gedacht, werde tun was du schreibst!
Allerdings hab ich den Befehl durchgetestet! An sich ist da nichts verkehrt. Bei einfacher ausführung funktioniert das ja auch! :ratlosbin:
|
| |
17.01.2006, 18:16
| Nach oben
#4 | | Daniel Golowin
Registriert seit: 17.11.2005 Ort: Rheinland-Pfalz, Osthofen
Beiträge: 130
|
Hey, danke Ben! Hab den einen gefunden! Hab mich an einer Variable vertippt!
Die Notice Meldung bleib aber! hmm...
|
| |
17.01.2006, 18:35
| Nach oben
#5 | | Erfahrener Benutzer
Registriert seit: 02.12.2004 Ort: Koblenz
Beiträge: 4.794
|
Nu, du versuchst auf den Index "templatename" zuzugreifen, aber den gibt es nicht.
Schau Dir mal an, wie das Array gefüllt ist ( var_dump()) und schau wo Du es füllst.
Dann findest Du eventuell schon den Grund, warum es zu dieser Meldung kommt.
Grüße Ben.
|
| |
17.01.2006, 18:42
| Nach oben
#6 | | Daniel Golowin
Registriert seit: 17.11.2005 Ort: Rheinland-Pfalz, Osthofen
Beiträge: 130
|
Man bin ich blod! Bingo!
So jetzt muss ich noch dafür sorgen, dass die Ersetzungsfunktionen richtig funktionieren und stell die dann die Classe hier koriegiert rein!
DANKE!
|
| |
17.01.2006, 18:50
| Nach oben
#7 | | Erfahrener Benutzer
Registriert seit: 02.12.2004 Ort: Koblenz
Beiträge: 4.794
|
Klasse. Da kommt kein "c" vor.
Deutsch: Klasse
Englisch: class |
| |
18.01.2006, 23:57
| Nach oben
#8 | | Erfahrener Benutzer
Registriert seit: 30.10.2005
Beiträge: 302
|
Wo wir grad dabei sind
Ich habe die Klasse vom Tutorial verändert und erweitert.
Die Funktion ersetzt Multi-Arrays wie $books und jeder Key is eben nochmal ein Array mit Titel, etc. Ähnlich wie ein DB Ergebnis
Vielleicht kann jemand mal die Funktion bei sich einbauen oder testen und den Code vielleicht zu optimieren...ist nämlich meines Erachtens ein bisschen viel, Perfomance mäßig merk ich nix aber vielleicht kann man das auch kürzer machen
Übrigens hab ich der Funktion assign noch ne Abfrage eingebaut wo checkt ob es ein String ist oder eben ein Array, falls ein Array dann kommt assign_array()
Anmerkungen: Das rtrim() und das preg_replace verwende ich damit beim zusammenbauen keine leeren Zeilen entstehen verwende ich trim werden allerdings die Tabs geschluckt, was ich aber im source z.b. bei ner Tabelle nich will.
Kann man sich irgendwie die zweite Schleife sparen indem man vielleicht sowas einsetzt wie str_replace mit einem array() http://www.phpbar.de/w/%DCbersichtliches_str_replace
*Hüstel...Rekurs**on...verschachteltes {foreach} ;) Code: {foreach $book}
{$autor} - {$title}
{/foreach}
PHP-Code: private function assign_array($replace, $replacement_array) { $matches = array (); preg_match('/\{foreach \$'.$replace.'\}(.*?)\{\/foreach\}/si', $this->template, $matches); $keys = array_keys($replacement_array['0']); $row = ''; foreach ($replacement_array as $array) { $items = $matches['1']; foreach ($keys as $key) { $items = str_replace($this->left_delimiter.$key.$this->right_delimiter, $array[$key], $items); } $row .= str_replace($matches['1'], $row, $items); $row = rtrim($row); } $all_rows = preg_replace('/\r\n/si', '', rtrim($row), 1); $this->template = str_replace($matches['0'], $all_rows, $this->template); return true; }
Geändert von ex³ (19.01.2006 um 00:06 Uhr)
|
| |
19.01.2006, 00:59
| Nach oben
#9 | | Daniel Golowin
Registriert seit: 17.11.2005 Ort: Rheinland-Pfalz, Osthofen
Beiträge: 130
| Zitat: |
Zitat von Ben Klasse. Da kommt kein "c" vor.
Deutsch: Klasse
Englisch: class  | Du musst verstehen Ben, ich schreibe Dagoisch! Deswegen das Durcheinander.
Aber nagut für dich habe ich jetzt auf Deutsch übersetzt!
Hab die Klassen oben aktualisiert! Folgende Ersetzungen sind möglich: Code: {$variablename}
{array="arrayname[indexname]"}
{template="templatename"}
{file="dateipfad"}
{function="funktionname(parm1, parm2)"}
Bin noch beim überlegen noch ein paar hinzuzufügen. Mal schaun.
@ex³
Super Funktion, schau mir die noch genauer an! Danke!
Wenn ihr Fragen zu meiner Klasse habt, einfach schreiben!
|
| |
19.01.2006, 11:14
| Nach oben
#10 | | Erfahrener Benutzer
Registriert seit: 30.10.2005
Beiträge: 302
|
Das Foreach lass ich ja durchgehen aber das Funktionen angewandt werden in der Template wie in Smarty die modifiert...ist ein bisschen zu viel meines Erachtens. Denke man sollte sich schön die Variablen zurechtmachen und dann einfach dem Template zuweisen.
|
| |
19.01.2006, 14:26
| Nach oben
#11 | | Daniel Golowin
Registriert seit: 17.11.2005 Ort: Rheinland-Pfalz, Osthofen
Beiträge: 130
|
Stimm dir zu ex³! Bei meiner Übelegung mache ich dass mit der URL, ich stelle sie als Array bereit! Sonstige allgemeinen Aufgaben erledige ich ebenfallst vor der Klasse.
Meine Überlegung ist nur etwas anders. An sich soll ja meine Klasse nicht einfach nur ein Template durchgehen und die bereitgestellten Ergebnisse einfügen, sondern selbst um die bereitstellung sorgen! D.h. die Funktionen.
Ich möchte auch nicht viel Code in Templates haben, lediglich nur ein Hinweis was rein soll. Ich mach mal ein Beispiel:
URL: http://www.domainname.de/index.php?aktion=login
Template: HTML-Code: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
...
</head>
<body>
...
{function="sitzung({array="url[aktion]"})"}
...
</body>
</html> Zuerst bereitstelle ich die URL als Array => $url['aktion'] = "login";
Der Inhalt des Array's wird dann an der Stelle ergenzt. Dann wird die benötigte Funktion geladen und ausgeführt. Hier handelt es sich um eine Anmeldung, also wird der Benutzer versucht anzumelden. Falls es nicht klappt, wird eine neue URL in den HEADER übergeben und der Benutzer umgeleitet.
Mein Ziel ist es einen Script zu haben, wo ich in den Templates nur schreiben muss, was rein gehört! Die benötigten Funktionen lege ich in einem Ordner ab. Der Script soll sich dann selbst um das aufrufen der Funktion kümmern und ein eventuell zurückgeliefertes Ergebnis an der etsprechender Stelle einfügen!
Leider habe ich bis her keine Möglichkeit gefunden, die bereits bereitgestellten Funktionen, aus der Klasse heraus auszuführen! Es müssten auch noch ein paar andere Schritte getan werden, bis das funktioniert. Ich möchte auch noch mit Klassen arbeiten können, sehe aber bis jetzt keine Möglichkeit diese sinvoll nutzen zu können. Wenn ich Ausserhalb der Klasse auf Methoden zugreiffen könnte, währe es etwas anders. Bin also noch am grübeln!
Naja mal schaun vielleicht gelingt mir ja noch das ganze!
Grüße dago
|
| |
20.01.2006, 10:26
| Nach oben
#12 | | Erfahrener Benutzer
Registriert seit: 30.10.2005
Beiträge: 302
|
Vielleicht mit preg "function="" raussuchen denn Inhalt mit Funktion_exists prüfen und wenns die gibt dann ausführen?
|
| |
20.01.2006, 10:39
| Nach oben
#13 | | Daniel Golowin
Registriert seit: 17.11.2005 Ort: Rheinland-Pfalz, Osthofen
Beiträge: 130
|
Hmm, wie du schon gemerkt haben solltest, arbeite ich ja schon mit Ersetzung durch preg_replace! Das Problem ist die Funktionen interhalb der Methode bekannt zu machen. Ich hab einfach bis her keine Möglichkeit gefunden, Funktionen Global bereitzustellen.
Mit Variablen und Array's klappt das, aber nicht mit Funktionen. Vielleicht kennst du ja eine Möglichkeit diese inerhalb der Methode bekannt zu machen?
|
| |
21.01.2006, 00:41
| Nach oben
#14 | | Daniel Golowin
Registriert seit: 17.11.2005 Ort: Rheinland-Pfalz, Osthofen
Beiträge: 130
| Zitat: |
Zitat von ex³ Vielleicht mit preg "function="" raussuchen denn Inhalt mit Funktion_exists prüfen und wenns die gibt dann ausführen? | Stell dir vor, genau dass habe ich auch zuerst probiert und irgendwie beim testen bin drauf gekommen, dass es nicht geht!
Jetzt hab ich das noch mal ausserhalb der Klasse ganz simpel durchgetestet! Es geht! Hab auch in die Klasse eingebaut, funktioniert!
Ich glaub ich war im Eifer das Ding so schnell wie Möglich fertig zu stellen, dass ich mir selber Steine in den Weg gelegt habe! Vergesse den letzten Post.
Naja mach mal weiter...
|
| |
11.03.2006, 14:03
| Nach oben
#15 | | Neuer Benutzer
Registriert seit: 11.03.2006
Beiträge: 29
| Zitat: |
Zitat von ex³ Wo wir grad dabei sind
Ich habe die Klasse vom Tutorial verändert und erweitert.
Die Funktion ersetzt Multi-Arrays wie $books und jeder Key is eben nochmal ein Array mit Titel, etc. Ähnlich wie ein DB Ergebnis
Vielleicht kann jemand mal die Funktion bei sich einbauen oder testen und den Code vielleicht zu optimieren...ist nämlich meines Erachtens ein bisschen viel, Perfomance mäßig merk ich nix aber vielleicht kann man das auch kürzer machen
Übrigens hab ich der Funktion assign noch ne Abfrage eingebaut wo checkt ob es ein String ist oder eben ein Array, falls ein Array dann kommt assign_array()
Anmerkungen: Das rtrim() und das preg_replace verwende ich damit beim zusammenbauen keine leeren Zeilen entstehen verwende ich trim werden allerdings die Tabs geschluckt, was ich aber im source z.b. bei ner Tabelle nich will.
Kann man sich irgendwie die zweite Schleife sparen indem man vielleicht sowas einsetzt wie str_replace mit einem array() http://www.phpbar.de/w/%DCbersichtliches_str_replace
*Hüstel...Rekurs**on...verschachteltes {foreach} ;) Code: {foreach $book}
{$autor} - {$title}
{/foreach}
PHP-Code: private function assign_array($replace, $replacement_array) { $matches = array (); preg_match('/\{foreach \$'.$replace.'\}(.*?)\{\/foreach\}/si', $this->template, $matches); $keys = array_keys($replacement_array['0']); $row = ''; foreach ($replacement_array as $array) { $items = $matches['1']; foreach ($keys as $key) { $items = str_replace($this->left_delimiter.$key.$this->right_delimiter, $array[$key], $items); } $row .= str_replace($matches['1'], $row, $items); $row = rtrim($row); } $all_rows = preg_replace('/\r\n/si', '', rtrim($row), 1); $this->template = str_replace($matches['0'], $all_rows, $this->template); return true; }
| wie müste man denn dann die werte übergeben mit einer while schleife oder wie????
oder brauch $book gar kein wert???
|
| |
12.03.2006, 23:02
| Nach oben
#16 | | Daniel Golowin
Registriert seit: 17.11.2005 Ort: Rheinland-Pfalz, Osthofen
Beiträge: 130
| Zitat: |
Zitat von lycoos wie müste man denn dann die werte übergeben mit einer while schleife oder wie????
oder brauch $book gar kein wert??? | Einfach vorher den Array erstellen und dann das Template der Klasse übergeben. PHP-Code: /* Code zur erstellung des Array's und anderer Variablen. */ /*Bsp.*/ $book[$autor] = $title; /* Hier Template parsen. Das Templates der Klasse übergeben und die Platzhalter ersetzen lassen. */
Das kann man auch im Template formatieren: HTML-Code: {foreach $book}
{$autor} - {$title}
{/foreach}
|
| |
21.03.2006, 21:27
| Nach oben
#17 | | Neuer Benutzer
Registriert seit: 11.03.2006
Beiträge: 29
|
könnte mal jemand nen beispiel machen büdde. so richtig chegge ich das net ^^
|
| |
30.06.2006, 16:50
| Nach oben
#18 | | Neuer Benutzer
Registriert seit: 30.06.2006
Beiträge: 2
|
Hallo Leute,
könnte hier nicht mal jemand antworten? Ich komm auch nicht klar mit dem PHP-Code. Das mit dem .tpl-file ist ok.
Bitte um ein vollständiges/ausführliches Beispiel.
danke!
Gruss n00b
|
| |
30.06.2006, 17:26
| Nach oben
#19 | | Benjamin Steininger
Registriert seit: 02.06.2005 Ort: weiher im tiefsten Odenwald
Beiträge: 1.379
| Zitat: |
Zitat von n00b Hallo Leute,
könnte hier nicht mal jemand antworten? Ich komm auch nicht klar mit dem PHP-Code. Das mit dem .tpl-file ist ok.
Bitte um ein vollständiges/ausführliches Beispiel.
danke!
Gruss n00b |
wozu genau willst du denn ein beispiel ? wie man seine klasse benutzt ?
|
| |
30.06.2006, 17:33
| Nach oben
#20 | | Neuer Benutzer
Registriert seit: 30.06.2006
Beiträge: 2
|
zur verwendung von foreach im template-system
|
| | |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | | | | Themen-Optionen | Thema durchsuchen | | | |
Forumregeln
| Es ist dir nicht erlaubt, neue Themen zu verfassen. Es ist dir nicht erlaubt, auf Beiträge zu antworten. Es ist dir nicht erlaubt, Anhänge hochzuladen. Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten. HTML-Code ist aus. | | | Alle Zeitangaben in WEZ +1. Es ist jetzt 23:24 Uhr.
|