Maison  >  Article  >  développement back-end  >  Comment rendre un "modèle de modèles" sans échapper à chaque opération

Comment rendre un "modèle de modèles" sans échapper à chaque opération

WBOY
WBOYavant
2024-02-10 17:18:171002parcourir

Comment rendre un modèle de modèles sans échapper à chaque opération

L'éditeur PHP Zimo est là pour vous présenter une nouvelle technologie, à savoir comment rendre des "modèles de modèles" sans échapper à chaque opération. Au cours du processus de développement, nous utilisons souvent des moteurs de modèles pour restituer du contenu dynamique, mais lorsque nous devons utiliser la syntaxe de modèle dans les modèles, nous rencontrons souvent des problèmes d'échappement. Cet article vous donnera une réponse détaillée sur la façon de résoudre ce problème afin qu'il puisse être mieux appliqué dans le développement de projets.

Contenu de la question

Est-ce que quelqu'un sait comment utiliser le contenu de text/template 渲染“模板的模板”,其中仅渲染特定操作(即:包裹在 {{...}}) pour que le reste soit traité sous forme de texte ?

Par exemple, étant donné le modèle suivant :

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.

Je souhaite afficher le résultat suivant :

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.

Bien que je puisse utiliser {{ "{{" }} pour échapper à chaque partie du texte que je veux, cela me semble un peu fastidieux.

Je suppose que je devrais pouvoir faire quelque chose comme 的事情我想渲染 {{template "outer" .foo}}. 并调用 tmpl.executetemplate(&buff, "outer", data) pour restituer uniquement les opérations "externes" que je spécifie.

J'aimerais aussi savoir si le rendu des "modèles de modèles" est une odeur de code et si possible je devrais remplacer mes modèles "externes" par des chaînes/remplacements comme 我想渲染 >.

Solution

Vous pouvez modifier le délimiteur du modèle de premier niveau :

tmpl := template.new("name").delims("<<",">>").parse(...)

Ensuite, écrivez le modèle comme :

I want to render <<.Foo>>.

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Remplacer la méthode Pop()Article suivant:Remplacer la méthode Pop()