Dieser Artikel beschreibt die Lösung für die ThinkPhp -Vorlage, ohne sie direkt auszuführen, wie es ist. Teilen Sie es für Ihre Referenz. Die Details sind wie folgt:
1. Frage:
Ich habe in letzter Zeit die ThinkPhp -Vorlage gelernt, aber ich habe festgestellt, dass die Vorlagenseite so war, wie sie war. Nach einer harten Suche fand ich schließlich die Lösung.
2. Lösung:
Viele Menschen sind auf das gleiche Problem gestoßen. Die Zeichen von __root__, __public__ und __app__, die in der in der Variablen zugewiesenen Zeichenfolge enthalten sind, werden durch den realen Pfad ersetzt, wenn sie in der Vorlage angezeigt werden. Das heißt, dieses Problem wurde beim Schreiben des Timi -Dateiverwaltungssystems entdeckt.
Lesen Sie den Quellcode aus der Datei aus und geben Sie ihn auf die Seite aus und stellen Sie fest, dass es durch den realen Pfad ersetzt wird, solange das Pfadzeichen TP ist.
Zum Beispiel:
Die Codekopie lautet wie folgt: $ this-> ordnen ('filecontent', $ fileContent); // $ fileContent enthält das __public__ "Pfadkonstante" -Charnia.
Die Seite wird als realer Pfad /public /ausgegeben.
Während dieser Zeit habe ich viele Dinge ausprobiert, wie z. B. Base64 -Verschlüsselung bei der Zuweisung, und sie bei der Ausgabe der Vorlage entschlüsselt, stellte jedoch fest, dass es nicht funktioniert hat. Schließlich konnte ich mir den Quellcode von TP ansehen und stellte fest, dass ich beim letzten Schritt der Anzeigemethode die "TP -Pfadkonstante" durch den realen Pfad ersetzt habe, indem ich die Tag -Methode aufrief. Es ist normal vor der Rendermethode.
Ich hatte ursprünglich geplant, den Quellcode zu ändern, um die folgenden Kinderschuheanforderungen zu erkennen:
Boss, ist dies eine vorübergehende Lösung oder eine endgültige Lösung?
Aber ich denke, es ist gut, der Methode AIMISION () ein Urteil hinzuzufügen.
Wenn es $ this-> ordnen ('', '', false), wird der Inhalt nicht ersetzt und die Ausgabe ist As-is.
Nachdem ich diesen Quellcode gelesen hatte, stellte ich fest, dass es nicht so einfach war und die Änderungen zu groß waren.
Die letzte Antwort von anderen Kinderschuhen wies auf die endgültige Lösung hin:
"Sie können sich hier auf den Inhalt beziehen: //www.vevb.com/article/54217.htm (Vorlageersatz)
Mit der Vorlageersatzregel werden alle __public__ -Zeichenfolgen auf der Seite ersetzt. Wenn Sie wirklich __Public__ -Zeichenfolgen in die Vorlage ausgeben müssen, können wir die Ersatzregel beispielsweise hinzufügen:
Kopieren Sie den Code wie folgt: 'tmpl_parse_string' => Array (Array (
'-Public--' => '__public__', // neue Regeln für die Ausgabe/öffentliche Zeichenfolge verwenden
)
Nachdem wir die Ersatzregel auf diese Weise hinzugefügt haben, müssen wir, wenn wir die __Public__-Zeichenfolge ausgeben möchten, nur-öffentlich-zur Vorlage hinzufügen, und die Ausgangsmethode anderer Ersatzzeichenfolgen ist ähnlich.
Nachdem wir die Ersatzregel auf diese Weise hinzugefügt haben, müssen wir, wenn wir die __Public__-Zeichenfolge ausgeben möchten, nur-öffentlich-zur Vorlage hinzufügen, und die Ausgangsmethode anderer Ersatzzeichenfolgen ist ähnlich.
Also wurde der Plan veröffentlicht:
Konfigurieren Sie in der Konfigurationsdatei config.php von TP
Kopieren Sie den Code wie folgt: 'tmpl_parse_string' => array (// Pfadkonfiguration
// den Timi -Dateipfad wiederherstellen
'-öffentlich--' => '__public__',,
'--App--' => '__app__',
'--Url--' => '__url__',
'-action--' => '__action__',
'-Self--' => '__self__',
'-info--' => '__info__',,
'-oxt--' => '__ext__'
),
Ersetzen Sie beim Lesen des Quellcodes das "Pfad konstante Zeichen" __root__ as --root--:
Die Codekopie lautet wie folgt: $ fileContent = file_get_contents ($ filepath);
$ fileContent = htmlSpecialChars (PREG_REPLACE ('/__(.*?__/ IS', '-$ 1-', $ fileContent));
Dann wird die Konfiguration TMPL_PARSE_STRING ersetzt, wenn die Vorlage analysiert wird, wie in der folgenden Abbildung gezeigt:
Daher wurde dieses Problem "vorübergehend" und "perfekt" gelöst.
Ich hoffe, dieser Artikel wird für die ThinkPhp Framework -Programmierung aller hilfreich sein.