Bagaimana untuk membuat 'templat templat' tanpa melarikan diri dari setiap operasi

WBOY
Lepaskan: 2024-02-10 17:18:17
ke hadapan
1002 orang telah melayarinya

Bagaimana untuk membuat templat templat tanpa melarikan diri dari setiap operasi

Editor PHP Zimo berada di sini untuk memperkenalkan anda kepada teknologi baharu, iaitu cara untuk memaparkan "templat templat" tanpa melepaskan setiap operasi. Semasa proses pembangunan, kami selalunya menggunakan enjin templat untuk memaparkan kandungan dinamik, tetapi apabila kami perlu menggunakan sintaks templat dalam templat, kami sering menghadapi masalah melarikan diri. Artikel ini akan memberi anda jawapan terperinci tentang cara menyelesaikan masalah ini supaya ia boleh digunakan dengan lebih baik dalam pembangunan projek.

Kandungan soalan

Adakah sesiapa tahu cara menggunakan kandungan dalam text/template 渲染“模板的模板”,其中仅渲染特定操作(即:包裹在 {{...}}) supaya selebihnya akan diproses sebagai teks?

Sebagai contoh, diberikan templat berikut:

i want to render {{.foo}}.

but i don't want to render anything on this line, like {{.bar}} or this template: [{{ .status | toupper }}{{ if eq .status "firing" }}:{{ .alerts.firing | len }}{{ end }}] {{ .commonlabels.alertname }} for {{ .commonlabels.job }}

render {{.foo}} again.
Salin selepas log masuk

Saya ingin memberikan output berikut:

I want to render foo.

but I don't want to render anything on this line, like {{.Bar}} or this template: [{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .CommonLabels.alertname }} for {{ .CommonLabels.job }}

Render foo again.
Salin selepas log masuk

Walaupun saya boleh menggunakan {{ "{{" }} untuk melarikan diri dari setiap bahagian teks yang saya inginkan, ia terasa agak membosankan.

Saya rasa saya sepatutnya boleh melakukan sesuatu seperti 的事情我想渲染 {{template "outer" .foo}}. 并调用 tmpl.executetemplate(&buff, "outer", data) untuk hanya memaparkan operasi "luaran" yang saya nyatakan.

Saya juga ingin tahu sama ada pemaparan "templat templat" ialah bau kod dan jika boleh saya harus menggantikan templat "luaran" saya dengan rentetan/penggantian seperti 我想渲染 <<.foo>>.

Penyelesaian

Anda boleh menukar pembatas templat tahap pertama:

tmpl := template.new("name").delims("<<",">>").parse(...)
Salin selepas log masuk

Kemudian, tulis templat sebagai:

I want to render <<.Foo>>.

but I don't want to render anything on this line, like {{.Bar}}...
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk membuat 'templat templat' tanpa melarikan diri dari setiap operasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!