Mam dużą formę z przycisków radiowych, które chciałbym dynamicznie tworzyć za pomocą nunjucks.Dynamiczne wprowadzanie dynamicznych danych wejściowych za pomocą danych json, nunjucks i pętli for
Mam plik json z danymi do wypełnienia każdej grupy wejściowej formularza html ze zmiennymi. HTML składa się z dwóch wejść radiowych na grupę.
Mogę pobrać zmienne z pliku json, ale utknąłem w tworzeniu pętli FOR.
Co próbuję osiągnąć, przechodzę przez każdą podsekcję w checklist.json i zapełniam listę html zmiennymi w każdej tablicy, budując listę aż do końca danych.
Jak widać z html, wszystkie zmienne z każdej tablicy są używane dwukrotnie w bloku wejściowym html z wyjątkiem wartości.
Podsumowanie: Tak długo, jak istnieją podsekcje zawierające tablicę, należy iterować dane wejściowe formularza HTML i zapełnić je obiektami w każdej macierzy.
index.njks
{% include "../includes/checklist-radio.njk" %}
checklist.json (var = checklist_json)
{"checklist_title":"checklist variable test",
"checklist": [
{"section_title":"Responsive Design (Useability)",
"section":[
{"subsection_title1":"Mozilla Firefox Useability",
"subsection":[
{
"radio_title": "Mobile (Samsung S7 Edge)",
"name":"firefox_mobile",
"value": 1,
"class":"useability"
},
{
"radio_title": "Tablet (Surface Pro)",
"name":"firefox_tablet",
"value": 1,
"class":"useability"
},
{
"radio_title": "Desktop (Windows 10)",
"name":"firefox_desktop",
"value": 1,
"class":"useability"
}
]}
]}
]}
checklist-radio.njk
{% for checklist_json.checklist.section.subsection in checklist_json.checklist.section %}
<li>
<span class="radio_title">{{checklist_json.checklist.section.subsection.radio_title}}</span>
<label class="radio_label">
<input type="radio" class="radio {{checklist_json.checklist.section.subsection.class}}" name="{{checklist_json.checklist.section.subsection.name}}" value="{{checklist_json.checklist.section.subsection.value | escape}}">
Yes</label>
<label class="radio_label">
<input type="radio" class="radio {{checklist_json.checklist.section.subsection.class}}" name="{{checklist_json.checklist.section.subsection.name}}" value="0">
No</label>
</li>
{% endfor %}
Myśli proszę?
edytuj: prawdziwa lista jest znacznie większa z wieloma sekcjami i podsekcjami.
wciąż ma nadzieję, że ktoś może dać kilka wskazówek na ten temat. – JPB
Sprawdź roztwór roboczy poniżej – Daniel