英文:
Get an element of a struct array by attribute value in a Golang template
问题
我想在Golang模板中显示特定WooCommerce产品自定义属性的值。
type Produkt struct {
...
Attributes []struct {
ID int `json:"id"`
Name string `json:"name"`
Position int `json:"position"`
Visible bool `json:"visible"`
Variation bool `json:"variation"`
Options []string `json:"options"`
}
...
}
一个实际的JSON对象如下所示:
{
...
"attributes": [
{},
{
"id": 2,
"name": "Hersteller",
"position": 5,
"visible": true,
"variation": false,
"options": [
"Lana Grossa"
]
},
{}
],
...
}
所以从这个例子中,我想找到具有名称为"Hersteller"的元素的"Options"数组的第一个元素(Lana Grossa)。
我尝试调整语法以通过索引获取元素,但无法使其工作...
<input type="text" value="{{ (index (value .Produkt.Attributes.Name eq "Hersteller").Options 0) }}"/>
<input type="text" value="{{ (index (Name .Produkt.Attributes eq "Hersteller").Options 0) }}"/>
<input type="text" value="{{ (index (.Produkt.Attributes.Name["Hersteller"]).Options 0) }}"/>
非常感谢任何提示。
英文:
I want to display the value of a certain WooCommerce product custom attribute in a Golang template.
type Produkt struct {
...
Attributes []struct {
ID int `json:"id"`
Name string `json:"name"`
Position int `json:"position"`
Visible bool `json:"visible"`
Variation bool `json:"variation"`
Options []string `json:"options"`
}
...
}
An actual json object looks like this:
{
...
"attributes": [
{},
{
"id": 2,
"name": "Hersteller",
"position": 5,
"visible": true,
"variation": false,
"options": [
"Lana Grossa"
]
},
{}
],
...
}
So from this example I want to find the first element of the 'Options' array (Lana Grossa) of the element with the name = "Hersteller" of the attributes array.
I tried to adapt the syntax to get an element by index, but could not get it to work...
<input type="text" value="{{ (index (value .Produkt.Attributes.Name eq "Hersteller").Options 0) }}"/>
<input type="text" value="{{ (index (Name .Produkt.Attributes eq "Hersteller").Options 0) }}"/>
<input type="text" value="{{ (index (.Produkt.Attributes.Name["Hersteller"]).Options 0) }}"/>
Any hint is greatly appreciated
答案1
得分: 2
这是要翻译的内容:
使用模板没有简单的方法来做到这一点。你首先需要找到你需要的条目,然后查看它的内容。
{{$name := "" }}
{{ range .Product.Attributes }}
{{if eq .Name "Hersteller"}}
{{$name = (index .Options 0)}}
{{end}}
{{ end }}
<input type="text" value="{{$name}}"/>
英文:
There is no simple way to do this with templates. You have to first find the entry you need, and then look at its contents
{{$name := "" }}
{{ range .Product.Attributes }}
{{if eq .Name "Hersteller"}}
{{$name = (index .Options 0)}}
{{end}}
{{ end }}
<input type="text" value="{{$name}}"/>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论