Bagaimana untuk menggabungkan fungsi and
和 eq/ne
bersama?
Saya menulis klip ini
{{ define "opsgenie.default.tmpl" }} <font size="+0"><b>{{.commonlabels.alertname }}</b></font> {{- range $i, $alert := .alerts }} <font size="+0">{{ .annotations.description }}</font> {{- end -}} {{- "\n" -}} {{- "\n" -}} {{- if and eq .commonlabels.infoalert "true" eq .commonlabels.topic "database" -}} grafana: https://{{ .commonlabels.url }} {{- "\n" -}}{{- end -}} {{- if and ne .commonlabels.infoalert "true" eq .commonlabels.topic "database" -}} database: • https://{{ .commonlabels.url }}/ • https://{{ .commonlabels.url }}/ {{- "\n" -}}{{- end -}} {{- end -}} {{- end -}} {{- end -}}
Matlamatnya ialah:
infoalert: true
和 topic:database
hanya pautan grafana ditunjukkantopic: database
但不包含 infoalert: true
maka hanya pautan databsse akan ditunjukkanNampaknya sintaks untuk {{- if and eq .commonlabels.infoalert "true" eq .commonlabels.topic "database" -}}
bersyarat tidak betul kerana saya mendapat ralat ini dalam alertmanager.log apabila amaran dicetuskan:
notify retry canceled due to unrecoverable error after 1 attempts: templating error: template: email.tmpl:24:17: executing \"opsgenie.default.tmpl\" at <eq>: wrong number of args for eq: want at least 1 got 0
Hanya gunakan kurungan untuk mengelompokkan ungkapan:
{{- if and (eq .commonlabels.infoalert "true") (eq .commonlabels.topic "database") -}} {{- if and (ne .commonlabels.infoalert "true") (eq .commonlabels.topic "database") -}}
Lihat contoh yang boleh diuji ini:
func main() { t := template.must(template.new("").parse(src)) m := map[string]any{ "infoalert": "true", "topic": "database", } if err := t.execute(os.stdout, m); err != nil { panic(err) } fmt.println("second round") m["infoalert"] = "false" if err := t.execute(os.stdout, m); err != nil { panic(err) } } const src = ` {{- if and (eq .infoalert "true") (eq .topic "database") -}} infoalert is true and topic is database {{- end -}} {{- if and (ne .infoalert "true") (eq .topic "database") -}} infoalert is not true and topic is database {{ end }} `
Ini akan menghasilkan (cuba di pergi taman permainan):
infoalert is true and topic is database Second round infoalert is NOT true and topic is database
Atas ialah kandungan terperinci Pergi templat jika syarat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!