![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Benutzer
Registriert seit: 16.09.2007
Beiträge: 32
|
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: 274
|
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: 32
|
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 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
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 |
|
Benutzer
Registriert seit: 09.03.2007
Ort: Nürnberg
Beiträge: 55
|
Ergänzend zu Martins Vorschlag: Ich denke dein $test-Array müsste etwas so aussehen:
PHP-Code:
|
|
|
|
|
|
Nach oben #7 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
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: 32
|
Die Template.cls.php
PHP-Code:
PHP-Code:
PHP-Code:
|
|
|
|
|
|
Nach oben #9 |
|
Erfahrener Benutzer
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 774
|
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 | |
|
Projektleiter
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.195
|
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: 32
|
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 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
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 |
|
|
|