![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Benutzer Registriert seit: 16.09.2007
Beiträge: 63
|
Hallo, Ich versuche gerade meine eigne template class zu schreiben. Es läuft auch so weit, aber ich steh nun seid 2 tagen auf dem schlauch und komm einfach nicht mehr weiter. Einfache Platzhalter kann es schon gut ersetzten, aber ich möchte auch das daten aus einer Datenbank einliest und ausgibt. Dies wolllte ich mit einer foreach schleife lösen. template.cls.php PHP-Code: PHP-Code: PHP-Code: Notice: Undefined index: 0 in /is/htdocs/wp1009673_FMKUCXMAF1/www/php/cls/template.class.php on line 165 Warning: array_keys() [function.array-keys]: The first argument should be an array in /is/htdocs/wp1009673_FMKUCXMAF1/www/php/cls/template.class.php on line 165 Warning: Invalid argument supplied for foreach() in /is/htdocs/wp1009673_FMKUCXMAF1/www/php/cls/template.class.php on line 169 Geändert von Victorious (17.09.2007 um 16:43 Uhr). |
| | |
| | Nach oben #2 |
| Erfahrener Benutzer Registriert seit: 30.10.2005
Beiträge: 279
|
Ich denke du brauchst ein assoziatives Array wie es aus einem ResultSet gefetched wird. $test = array( array( "news" => 1 ), array( "news" => 2 ) ); Find ich ja ok das du meinen schlampigen Schnipsel nimmst, allerdings würd ich davon abraten und eher auf Smarty oder irgendeine PEAR Template Klasse setzen. |
| | |
| | Nach oben #3 |
| Benutzer Registriert seit: 16.09.2007
Beiträge: 63
|
Hm ich habe schon mit samrty gearbeite finde es auch sehr gut. Nur will mein eigenes haben. Was das erfüllen soll -Platzhalter ersetzen (funktioniert schon) -Schleifen -Cachen Und aus dem Quellecode von samrty werde ich auch ned ganz schlau. Daher habe ich hier mal im forum geschaut und nach tutorials gesucht.Wo ich auch fündig wurde.^^ Aber irgendwie klappt das ganze nicht so. Wenn ich das anwede kommt der fehler: Notice: Use of undefined constant topic_id - assumed 'topic_id' in /is/htdocs/wp1009673_FMKUCXMAF1/www/php/index2.php on line 27 Notice: Use of undefined constant topic_title - assumed 'topic_title' in /is/htdocs/wp1009673_FMKUCXMAF1/www/php/index2.php on line 30 Der code sieht dazu so aus PHP-Code: Geändert von Victorious (17.09.2007 um 19:01 Uhr). |
| | |
| | Nach oben #4 |
| Martin Breuer Registriert seit: 17.08.2005 Ort: Berlin
Beiträge: 1.642
|
wenn dein Array mit assozierten Indexen arbeitet, so sind diese vom Typ String. Du solltest also $data['topic_id'] bzw $data["topic_id"] verwenden. Das wird übrigends auch in der Fehlermeldung erklärt.
__________________ I did it my way - Senseless-Blog |
| | |
| | Nach oben #5 |
| Christian Schuhmann Registriert seit: 09.03.2007 Ort: Nürnberg
Beiträge: 58
|
Ergänzend zu Martins Vorschlag: Ich denke dein $test-Array müsste etwas so aussehen: PHP-Code: |
| | |
| | Nach oben #7 |
| Martin Breuer Registriert seit: 17.08.2005 Ort: Berlin
Beiträge: 1.642
|
Dann zeig uns bitte nochmal kurz was du genau als Quellcode hast. Ich seh grade nicht mehr so richtig durch
__________________ I did it my way - Senseless-Blog |
| | |
| | Nach oben #8 |
| Benutzer Registriert seit: 16.09.2007
Beiträge: 63
|
Die Template.cls.php PHP-Code: PHP-Code: PHP-Code: |
| | |
| | Nach oben #9 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 825
|
Hi. Abgesehen davon, dass ich von dieser Template-Strategie immer noch nichts halte und jetzt nicht nach einem konkreten Fehler gesucht habe zwei grundsätzliche Anmerkungen: Warum führst du die Ersetzungen nicht erst aus, wenn das Template ausgegeben werden soll? Kann doch sein, dass sich in einem eingebetteten Modul ein Fehler zeigt, dann wird am Ende gar nichts ausgegeben, wurden die Ersetzungen also völlig umsonst durchgeführt. Wichtiger noch: Wie überschreibst du eine einmal gemachte Zuweisung wieder (Zum Beispiel den Seitentitel)? Wie hängst du nochmal was an ein Array an? (Zum Beispiel Meta-Tags)? Und der zweite Punkt: Warum weist du die Werte, die in der Schleife bei den einzelnen Durchläufen gelten nicht einer Variable im Template zu? Wie kann ein Template-Designer innerhalb der Schleife unterscheiden zwischen einem globalen $topic_id und einem $news['topic_id']? Und zusammen: Was, wenn du jetzt vor der Zuweisung eines Wertes an $news der Vatiable $topic_id einen Wert zuweist? Werden dann auch die $topic_id in der foreach-Schleife ersetzt? Da scheint mir schon vor der Umsetzung in der Konzeption einiges unklar zu sein. Basti |
| | |
| | Nach oben #10 | |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 2.200
| Ein @ vor einer Funktion sorgt dafür, dass die Fehler, die man auf andere Weise auffangen sollte, nicht angezeigt werden. Zum debuggen (also dem Auffinden von Fehlern) ist das absolut destruktiv. Du schriebst: Zitat:
Das @ war das erste, was mir auffiel... | |
| | |
| | Nach oben #11 |
| Benutzer Registriert seit: 16.09.2007
Beiträge: 63
|
Was ist den falsch Templates zu benutzen?Ich hab früher alles ohne gemacht,aber mit der zeit wurde alles unübersichtlich da die seiten größer wurden und die scripte.Dann bin ich auf smarty umgestiegen wo ich eigentlich begeistert bin, aber ich möchte nun halt selber eins schreiben.Da smarty viel mehr funktionen hat als ich sie brauche. Und durch Templates ist es für meinen designer und mich leichter gewurden ich kann meine scripte schreiben und er das html+grafiken. Ich muss dann nur noch die Platzhalter einfügen und nicht mehr den gesamten code. Oder habe ich die falsch verstanden @basti?
|
| | |
| | Nach oben #12 |
| Martin Breuer Registriert seit: 17.08.2005 Ort: Berlin
Beiträge: 1.642
|
Er meinte nicht die Templateverwendung an sich, sondern wohl eher die Art, wie du es zu lösen versuchst. Such mal nach "Template" im Forum, es gab dazu schon einige sehr gute Threads die sich zum Teil auch gut der Konzeptionierung gewidmet haben.
__________________ I did it my way - Senseless-Blog |
| | |
| | Nach oben #13 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.471
|
Die Diskussion über pro und contra von Templates kann man wunderbar an dieser Stelle diskutieren: PHP Templates (Bsp. Wordpress) Bitte nicht in diesem Thread, da das dann doch etwas am Thema vorbeigeht. Danke. |
| | |
| | Nach oben #14 | |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 825
|
Nein, es geht natürlich nicht um die Frage, ob Templates oder nicht (übrigens auch nicht im von Ben verlinkten Thread, denn "PHP-Templates" sind natürlich auch Templates, ist ja klar). Ich halte es einfach für übertrieben aufwändig, Templates von Hand zu parsen, anstatt auf direktem Weg das zu tun, was man da umsetzen will: Man ist der Meinung, PHP sei für einen Template-Designer zu mächtig, von mir aus auch zu aufwändig oder zu fehleranfällig etc., also bietet man ihm eine Template-Umgebung an, die nur bestimmte Optionen zulässt, Fehler selbstständig glattbügelt, einfach ist etc. Man legt also zu einen Filter und Übersetzer zwischen PHP und den Template-Designer, so wie es Smarty und andere Template-Engines machen. Ich weiß nicht, was daran so toll oder gar vorteilhaft sein soll, sich selbst einen Parser zu bauen? …aber, das ist ja nicht so ganz das Thema hier. Zitat:
Basti Geändert von Basti (18.09.2007 um 16:12 Uhr). | |
| | |
| | Nach oben #15 | |
| Martin Breuer Registriert seit: 17.08.2005 Ort: Berlin
Beiträge: 1.642
| Zitat:
Könnten wir bitte jetzt wieder zurück zum Topic kommen? @Victorious: Hat der Tipp von JannH geholfen? Wenn nicht, dann bau dir ein paar Debugausgaben und und schau nach was so in den Variablen gespeichert ist.
__________________ I did it my way - Senseless-Blog | |
| | |
| | Nach oben #18 |
| Martin Breuer Registriert seit: 17.08.2005 Ort: Berlin
Beiträge: 1.642
| PHP-Code: |