Artikel ini menjelaskan solusi untuk template ThinkPHP tanpa mem -parsingnya secara langsung output apa adanya. Bagikan untuk referensi Anda. Dengan rincian sebagai berikut:
1. Pertanyaan:
Saya telah belajar Template ThinkPHP baru -baru ini, tetapi saya menemukan bahwa halaman templat itu seperti itu. Setelah pencarian yang sulit, saya akhirnya menemukan solusinya.
2. Solusi:
Banyak orang mengalami masalah yang sama. Karakter __root__, __public__, dan __app__ yang terkandung dalam string yang ditetapkan dalam variabel diganti dengan jalur nyata ketika ditampilkan dalam templat. Artinya, masalah ini ditemukan saat menulis sistem manajemen file Timi.
Baca kode sumber dari file dan output ke halaman dan temukan selama karakter path adalah TP, itu diganti dengan jalur yang sebenarnya.
Misalnya:
Salinan kode adalah sebagai berikut: $ this-> penugasan ('FileContent', $ filecontent); // $ filecontent berisi karakter "Path Constant" __public__.
Halaman ini output sebagai jalur /publik yang sebenarnya /.
Selama periode ini, saya telah mencoba banyak hal, seperti enkripsi Base64 saat menetapkan, dan mendekodenya saat mengeluarkan templat, tetapi menemukan bahwa itu tidak berhasil. Akhirnya, saya tidak bisa membantu tetapi melihat kode sumber TP dan menemukan bahwa pada langkah terakhir dari metode tampilan, saya mengganti "konstanta jalur TP" dengan jalur yang sebenarnya dengan memanggil metode tag. Itu normal sebelum metode render.
Saya awalnya berencana untuk mengubah kode sumber untuk mewujudkan persyaratan sepatu anak -anak berikut:
Bos, apakah ini solusi sementara atau solusi akhir?
Tapi saya pikir itu baik untuk menambahkan penilaian ke metode penugasan ().
Jika $ this-> assign ('', '', false), konten tidak akan diganti dan output akan adanya apa adanya.
Akibatnya, setelah membaca kode sumber ini, saya menemukan bahwa itu tidak mudah dan perubahannya terlalu besar.
Balasan terakhir dari sepatu anak -anak lain menunjukkan solusi terakhir:
"Anda dapat merujuk ke konten di sini: //www.vevb.com/article/54217.htm (penggantian templat)
Dengan aturan penggantian template, semua string __public__ pada halaman akan diganti. Jika Anda benar -benar perlu mengeluarkan string __public__ ke templat, kami dapat menambahkan aturan penggantian, misalnya:
Salin kode sebagai berikut: 'tmpl_parse_string' => array (
'---Bublic--' => '__public__', // Gunakan aturan baru untuk output/string publik
)
Setelah menambahkan aturan penggantian dengan cara ini, jika kita ingin menampilkan string __public__, kita hanya perlu menambahkannya-publik-ke templat, dan metode output dari string penggantian lainnya serupa.
Setelah menambahkan aturan penggantian dengan cara ini, jika kita ingin menampilkan string __public__, kita hanya perlu menambahkannya-publik-ke templat, dan metode output dari string penggantian lainnya serupa.
Jadi, rencananya dirilis:
Konfigurasikan di Konfigurasi File Konfigurasi TP.php
Salin kode sebagai berikut: 'tmpl_parse_string' => array (// konfigurasi jalur
// Kembalikan jalur file Timi
'---Bublic--' => '__public__',
'--App--' => '__app__',
'--Url--' => '__Url__',
'--Action--' => '__action__',
'--Elf--' => '__self__',
'--Info--' => '__info__',
'--Ext--' => '__ext__'
),
Saat membaca kode sumber, ganti "Path Constant Character" __root__ sebagai --root--:
Salinan kode adalah sebagai berikut: $ filecontent = file_get_contents ($ filepath);
$ filecontent = htmlspecialchars (preg_replace ('/__(.*?)__/ adalah', '-$ 1-', $ filecontent));
Kemudian konfigurasi TMPL_PARSE_STRING diganti saat templat diuraikan, seperti yang ditunjukkan pada gambar di bawah ini:
Oleh karena itu, masalah ini diselesaikan "sementara" dan "sempurna".
Saya harap artikel ini akan membantu pemrograman kerangka berpikir semua orang.