Heim Web-Frontend js-Tutorial Lösung für das Problem, dass die Thinkphp-Vorlage aufgrund ihrer Javascript-Kenntnisse nicht direkt analysiert und ausgegeben werden kann

Lösung für das Problem, dass die Thinkphp-Vorlage aufgrund ihrer Javascript-Kenntnisse nicht direkt analysiert und ausgegeben werden kann

May 16, 2016 pm 04:32 PM
thinkphp 模板 解决方法

Das Beispiel in diesem Artikel beschreibt die Lösung des Problems, dass die Thinkphp-Vorlage nicht geparst wird und direkt so ausgegeben wird, wie sie ist. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

1. Frage:

Ich habe kürzlich Thinkphp-Vorlagen kennengelernt, aber nach einigem Suchen habe ich endlich die Lösung gefunden.

2. Lösung:

Viele Leute sind auf das gleiche Problem gestoßen. Die in der der Variablen zugewiesenen Zeichenfolge enthaltenen Werte __ROOT__, __PUBLIC__ und __APP__ werden bei der Anzeige in der Vorlage durch echte Pfade ersetzt. Ich habe dieses Problem beim Schreiben des Timi-Dateiverwaltungssystems entdeckt.

Nachdem ich den Quellcode aus der Datei gelesen und auf der Seite ausgegeben hatte, stellte ich fest, dass, solange es sich um ein TP-Pfadzeichen handelt, es durch einen echten Pfad ersetzt wurde.
Zum Beispiel:

Code kopieren Der Code lautet wie folgt:
$this->assign('fileContent',$ fileContent); //$fileContent enthält __PUBLIC__ „Pfadkonstante“-Zeichen.


Nachdem die Seite ausgegeben wurde, wird sie als echter Pfad /public/ angezeigt.
Während dieser Zeit habe ich viele Versuche unternommen, z. B. die Base64-Verschlüsselung beim Zuweisen und die Dekodierung bei der Ausgabe der Vorlage, und festgestellt, dass es nicht funktioniert hat. Schließlich konnte ich nicht anders, als mir den Quellcode von Tp anzusehen und stellte fest, dass im letzten Schritt der Anzeigemethode die „Tp-Pfadkonstante“ durch Aufrufen der Tag-Methode durch den tatsächlichen Pfad ersetzt wurde. Vor der Render-Methode ist alles normal.

Ursprünglich hatte ich geplant, den Quellcode zu ändern, um die folgende Lösung für Kinderschuhe zu implementieren:
Boss, ist das eine vorübergehende Lösung oder eine endgültige Lösung?
Aber ich denke, es ist nicht schlecht, der Methode „assign()“ ein Urteil hinzuzufügen,
Wenn es $this->assign('','',false) ist, wird der Inhalt nicht ersetzt und unverändert ausgegeben.

Nachdem ich diesen Quellcode gelesen hatte, wurde mir klar, dass es nicht so einfach war und die Änderungen zu groß waren.

Die letzte Antwort eines anderen Kindes zeigte die endgültige Lösung auf:

"Sie können hier auf den Inhalt verweisen: http://www.jb51.net/article/54217.htm(Vorlagenersatz)

Mit den Vorlagenersetzungsregeln werden alle __PUBLIC__-Strings auf der Seite ersetzt. Wenn wir den __PUBLIC__-String wirklich in der Vorlage ausgeben müssen, können wir Ersetzungsregeln hinzufügen, zum Beispiel:

Code kopieren Der Code lautet wie folgt:
'TMPL_PARSE_STRING' =>array(
'--PUBLIC--' => '__PUBLIC__', // Neue Regeln zur Ausgabe von /Public string verwenden
)

Nachdem wir die Ersetzungsregel auf diese Weise hinzugefügt haben, müssen wir, wenn wir die Zeichenfolge __PUBLIC__ ausgeben möchten, nur --PUBLIC-- in der Vorlage hinzufügen. Die Ausgabemethode anderer Ersetzungszeichenfolgen ist ähnlich.

Wenn wir nach dem Hinzufügen der Ersetzungsregeln auf diese Weise die Zeichenfolge __PUBLIC__ ausgeben möchten, müssen wir nur --PUBLIC-- in der Vorlage hinzufügen. Die Ausgabemethode anderer Ersetzungszeichenfolgen ist ähnlich.

Also wurde der Plan veröffentlicht:

Konfigurieren Sie in der Tp-Konfigurationsdatei config.php

Code kopieren Der Code lautet wie folgt:
'TMPL_PARSE_STRING' => Array (//Pfadkonfiguration
                           
//Timi-Dateipfadwiederherstellung
'--PUBLIC--' => '__PUBLIC__',
'--APP--' => '__APP__',
'--URL--' => '__URL__',
'--ACTION--' => '__ACTION__',
'--SELF--' => '__SELF__',
'--INFO--' => '__INFO__',
'--EXT--' => '__EXT__'
),

Ersetzen Sie beim Lesen des Quellcodes das „Pfadkonstantenzeichen“ __ROOT__ durch --ROOT--:

Code kopieren Der Code lautet wie folgt:
$fileContent=file_get_contents($filePath);
$fileContent=htmlspecialchars(preg_replace('/__(.*?)__/is','--$1--',$fileContent));

Dann wird die Konfiguration von TMPL_PARSE_STRING einfach ersetzt, wenn die Vorlage analysiert wird, wie in der Abbildung unten gezeigt:

Seitdem ist dieses Problem „vorübergehend“ und „perfekt“ gelöst.

Ich hoffe, dass dieser Artikel für alle bei der Programmierung des ThinkPHP-Frameworks hilfreich sein wird.

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was soll ich tun, wenn ich auf den Codendruck auf Kleidungsstücke für Front-End-Thermalpapier-Quittungen stoße? Was soll ich tun, wenn ich auf den Codendruck auf Kleidungsstücke für Front-End-Thermalpapier-Quittungen stoße? Apr 04, 2025 pm 02:42 PM

Häufig gestellte Fragen und Lösungen für das Ticket-Ticket-Ticket-Ticket in Front-End im Front-End-Entwicklungsdruck ist der Ticketdruck eine häufige Voraussetzung. Viele Entwickler implementieren jedoch ...

Wie löste ich das Onblur-Ereignis einer Zelle im Bearbeitungsmodus von Avue-Crud Row manuell aus? Wie löste ich das Onblur-Ereignis einer Zelle im Bearbeitungsmodus von Avue-Crud Row manuell aus? Apr 04, 2025 pm 02:00 PM

Das Onblur-Ereignis, das die Avue-Crud-Reihenbearbeitung in der Avue-Komponentenbibliothek implementiert, löst die Avue-Crud-Komponente manuell aus. Es bietet bequeme Inline-Bearbeitungsfunktionen, aber manchmal müssen wir ...

Warum wird mein RXJS -Code beim Betrieb auf Streams nicht wirksam? Warum wird mein RXJS -Code beim Betrieb auf Streams nicht wirksam? Apr 04, 2025 pm 06:27 PM

Warum wird mein Code nicht wirksam, wenn sie RXJS zum Betrieb in Streams verwenden? Rxjs lernen ...

Wie geben Sie die Version des lokalen Pakets in PNPM- und Monorepo -Projekten an? Wie geben Sie die Version des lokalen Pakets in PNPM- und Monorepo -Projekten an? Apr 04, 2025 pm 04:06 PM

So geben Sie die Version lokaler Pakete in PNPM- und Monorepo -Projekten an, wenn Sie Projekte mithilfe von PNPM und Monorepo verwalten.

Gitee Pages statische Website -Bereitstellung fehlgeschlagen: Wie können Sie einzelne Dateien 404 Fehler beheben und beheben? Gitee Pages statische Website -Bereitstellung fehlgeschlagen: Wie können Sie einzelne Dateien 404 Fehler beheben und beheben? Apr 04, 2025 pm 11:54 PM

GitePages statische Website -Bereitstellung fehlgeschlagen: 404 Fehlerbehebung und Auflösung bei der Verwendung von Gitee ...

Element Plus Tabellenkomponente MAX-Höhe ist ungültig? Wie mache ich die Tabelle sehr anpassungsfähig und zeigt Bildlaufleisten an? Element Plus Tabellenkomponente MAX-Höhe ist ungültig? Wie mache ich die Tabelle sehr anpassungsfähig und zeigt Bildlaufleisten an? Apr 04, 2025 pm 04:03 PM

Der MAX-Height-Attributfehler der ElementPlus-Tabellenkomponente und die Lösung besteht darin, Element zu verwenden ...

Wie kann man ein Blur-Ereignis für die Veröffentlichung in einer Avue-Crud-Tabelle manuell auslösen? Wie kann man ein Blur-Ereignis für die Veröffentlichung in einer Avue-Crud-Tabelle manuell auslösen? Apr 04, 2025 pm 02:30 PM

Das Blur-Ereignis, das die Avue-Crud-Tabellenzeilenbearbeitung in der Avue-Komponentenbibliothek implementiert, löst die Avue-Crud-Komponente manuell aus, um bequeme Tabellendatenbearbeitungsfunktionen bereitzustellen, aber die Zeilenbearbeitung ...

See all articles