Menggunakan Konteks Permintaan dalam Templat Go
Templat Dalam Go, anda mungkin menghadapi situasi di mana anda perlu mengakses maklumat daripada permintaan yang mencetuskan, seperti menentukan sama ada pengguna semasa adalah pentadbir. Walau bagaimanapun, templat tidak mempunyai kesedaran yang wujud tentang konteks permintaan.
Penyelesaian: Talian Paip
Satu pendekatan biasa ialah menggunakan saluran paip untuk menghantar data yang diperlukan daripada pengendali kepada templat . Ini melibatkan mencipta pembolehubah saluran paip yang mengandungi maklumat konteks yang berkaitan dan kemudian mengaksesnya dalam templat. Contohnya:
<code class="go">type TemplateData struct { IsUserAdmin bool } func handler(w http.ResponseWriter, r *http.Request) { isUserAdmin := isAdmin(r) data := TemplateData{IsUserAdmin: isUserAdmin} t.Execute(w, data) }</code>
Dalam templat:
{{if .IsUserAdmin}} <a href="/admin/nuke">Go to the big red nuclear button</a> {{end}}
Membenamkan Konteks
Pilihan lain ialah membenamkan konteks permintaan ke dalam adat struktur data templat. Ini membolehkan anda mengakses kedua-dua data templat dan konteks secara serentak:
<code class="go">type TemplateData struct { Data interface{} Context *http.Request }</code>
Dalam templat:
{{if .Context.IsAdmin}} <a href="/admin/nuke">Go to the big red nuclear button</a> {{end}}
Kaedah Corong
Walaupun kaedah Funcs boleh digunakan untuk mentakrifkan fungsi tersuai, kaedah ini tidak disyorkan untuk mengendalikan logik kompleks seperti menentukan kebenaran pengguna. Adalah lebih baik untuk menyimpan tugas sedemikian dalam pengendali atau pengawal.
Amalan Terbaik
Secara amnya, ia dianggap sebagai amalan terbaik untuk mengehadkan templat untuk mengendalikan logik paparan dan mengelakkan daripada memperkenalkan logik perniagaan atau meminta kebergantungan konteks. Walau bagaimanapun, dalam situasi tertentu, anda mungkin perlu mengakses maklumat permintaan tertentu, oleh itu kaedah yang diterangkan di atas.
Atas ialah kandungan terperinci Berikut ialah beberapa pilihan tajuk, bermain dengan nada dan tahap kekhususan yang berbeza: **Langsung & Bermaklumat:** * Cara Mengakses Konteks Permintaan dalam Templat Go * Templat Pergi: Mengakses Permintaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!