Twig 细枝中的变量

Twig 细枝中的变量,twig,Twig,我正在尝试使用Twig中的hash编写一个包含1级子菜单的菜单。我的代码是: {% set regiones = { patagonia: { title: "Patagonia"}, pampa: { title: "Pampa"}, cuyo: { title: "Cuyo"}, noreste: { title: "Noreste"}, noroeste: { title: "Noroeste"} } %} {% set patagonia = { neuq

我正在尝试使用Twig中的hash编写一个包含1级子菜单的菜单。我的代码是:

{% set regiones = {
patagonia:    { title: "Patagonia"},
pampa: { title: "Pampa"},
cuyo:     { title: "Cuyo"},
noreste:     { title: "Noreste"},
noroeste:     { title: "Noroeste"}
} %}

{% set patagonia = {
neuquen:    { title: "Neuquén"},
rionegro: { title: "Río Negro"},
chubut:     { title: "Chubut"},
santacruz:     { title: "Santa Cruz"},
tierradelfuego:     { title: "Tierra del Fuego"}
} %}

{% set pampa = {
buenosaires:    { title: "Buenos Aires"},
cordoba: { title: "Córdoba"},
lapampa:     { title: "La Pampa"},
santafe:     { title: "Santa Fe"}
} %}

{% set cuyo = {
mendoza:    { title: "Mendoza"},
sanjuan: { title: "San Juan"},
sanluis:     { title: "San Luis"}
} %}


<nav>
   <ul>
      {% for slug, item in regiones %}
         <li><a href="/{{ slug }}">{{ item.title }}</a>
            <ul>
               {% for slugg, itemm in {{ slug }}  %}
                  <li><a href="/{{ slugg }}">{{ itemm.title }}</a></li>
               {% endfor %}
            </ul>
         </li>
      {% endfor %}
   </ul>
</nav>
{%set regiones={
巴塔哥尼亚:{标题:“巴塔哥尼亚”},
pampa:{标题:“pampa”},
cuyo:{标题:“cuyo”},
诺雷斯特:{标题:“诺雷斯特”},
诺洛斯特:{标题:“诺洛斯特”}
} %}
{%set巴塔哥尼亚={
neuquen:{标题:“Neuquén”},
里奥内格罗:{标题:“里奥内格罗”},
丘布特:{标题:“丘布特”},
santacruz:{标题:“Santa Cruz”},
火地岛:{标题:“火地岛”}
} %}
{%set pampa={
布宜诺斯艾利斯:{标题:“布宜诺斯艾利斯”},
科尔多瓦:{标题:“科尔多瓦”},
拉帕帕:{标题:“拉帕帕”},
圣塔菲:{标题:“圣塔菲”}
} %}
{%set cuyo={
门多萨:{标题:“门多萨”},
圣胡安:{标题:“圣胡安”},
圣路易斯:{标题:“圣路易斯”}
} %}
    {%为slug,项位于regiones%}
    • {{slug}}%}中的{slug%为,itemm为
    • {%endfor%}
  • {%endfor%}
这一行:“{slug}}}%}中的{%for slug,itemm”不起作用。 如何在twig中编写PHP中的${$slug}之类的变量

谢谢,
Mikel将变量保存在当前上下文中,因此您可以执行以下操作:

{% for slugg, itemm in _context[slug] %}
因为您没有设置变量
noreste
noroeste
,所以需要用
if
块包围
for
块(否则,Twig将抛出异常,因为
\u上下文
没有键
noreste
noroeste
):

然后修改循环,如下所示:

{% set cities = {
    patagonia: {
        neuquen:        { title: "Neuquén"},
        rionegro:       { title: "Río Negro"},
        chubut:         { title: "Chubut"},
        santacruz:      { title: "Santa Cruz"},
        tierradelfuego: { title: "Tierra del Fuego"}
    },

    pampa: {
        buenosaires: { title: "Buenos Aires"},
        cordoba:     { title: "Córdoba"},
        lapampa:     { title: "La Pampa"},
        santafe:     { title: "Santa Fe"}
    },

    cuyo: {
        mendoza: { title: "Mendoza"},
        sanjuan: { title: "San Juan"},
        sanluis: { title: "San Luis"}
    }
} %}
{% if cities[slug] is defined %}
    <ul>
        {% for slugg, itemm in cities[slug] %}
            <li><a href="/{{ slugg }}">{{ itemm.title }}</a></li>
        {% endfor %}
    </ul>
{% endif %}
{%如果定义了城市[slug%}
    {城市中的slug、itemm的百分比[slug]}
  • {%endfor%}
{%endif%}

还有一种方法是将地区和城市放在同一个哈希中:

{% set regiones = {
    patagonia: {
        title: "Patagonia",
        cities: {
            neuquen:        { title: "Neuquén"},
            rionegro:       { title: "Río Negro"},
            chubut:         { title: "Chubut"},
            santacruz:      { title: "Santa Cruz"},
            tierradelfuego: { title: "Tierra del Fuego"},
        },
    },
    pampa: {
        title: "Pampa",
        cities: {
            buenosaires: { title: "Buenos Aires"},
            cordoba:     { title: "Córdoba"},
            lapampa:     { title: "La Pampa"},
            santafe:     { title: "Santa Fe"},
        },
    },
    cuyo: {
        title: "Cuyo",
        cities: {
            mendoza: { title: "Mendoza"},
            sanjuan: { title: "San Juan"},
            sanluis: { title: "San Luis"},
        },
    },
    noreste: {
        title: "Noreste",
    },
    noroeste: {
        title: "Noroeste",
    },
} %}

<nav>
   <ul>
      {% for slug, item in regiones %}
         <li>
             <a href="/{{ slug }}">{{ item.title }}</a>
             {% if item.cities is defined %}
                 <ul>
                     {% for slugg, itemm in item.cities %}
                         <li><a href="/{{ slugg }}">{{ itemm.title }}</a></li>
                     {% endfor %}
                 </ul>
             {% endif %}
         </li>
      {% endfor %}
   </ul>
</nav>
{%set regiones={
巴塔哥尼亚:{
标题:“巴塔哥尼亚”,
城市:{
neuquen:{标题:“Neuquén”},
里奥内格罗:{标题:“里奥内格罗”},
丘布特:{标题:“丘布特”},
santacruz:{标题:“Santa Cruz”},
火地岛:{标题:“火地岛”},
},
},
潘帕:{
标题:“潘帕”,
城市:{
布宜诺斯艾利斯:{标题:“布宜诺斯艾利斯”},
科尔多瓦:{标题:“科尔多瓦”},
拉帕帕:{标题:“拉帕帕”},
圣塔菲:{标题:“圣达菲”},
},
},
cuyo:{
标题:“Cuyo”,
城市:{
门多萨:{标题:“门多萨”},
圣胡安:{标题:“圣胡安”},
圣路易斯:{标题:“圣路易斯”},
},
},
诺雷斯特:{
标题:“诺雷斯特”,
},
诺罗斯特:{
标题:“诺罗埃斯特”,
},
} %}
    {%为slug,项位于regiones%}
  • {%如果定义了item.cities%}
      {对于slug,item.cities%}
    • {%endfor%}
    {%endif%}
  • {%endfor%}

可能重复的@martias的可能重复不知道您何时首先回答问题,然后将其标记为重复。只需标记为dupe,然后继续前进
{% set regiones = {
    patagonia: {
        title: "Patagonia",
        cities: {
            neuquen:        { title: "Neuquén"},
            rionegro:       { title: "Río Negro"},
            chubut:         { title: "Chubut"},
            santacruz:      { title: "Santa Cruz"},
            tierradelfuego: { title: "Tierra del Fuego"},
        },
    },
    pampa: {
        title: "Pampa",
        cities: {
            buenosaires: { title: "Buenos Aires"},
            cordoba:     { title: "Córdoba"},
            lapampa:     { title: "La Pampa"},
            santafe:     { title: "Santa Fe"},
        },
    },
    cuyo: {
        title: "Cuyo",
        cities: {
            mendoza: { title: "Mendoza"},
            sanjuan: { title: "San Juan"},
            sanluis: { title: "San Luis"},
        },
    },
    noreste: {
        title: "Noreste",
    },
    noroeste: {
        title: "Noroeste",
    },
} %}

<nav>
   <ul>
      {% for slug, item in regiones %}
         <li>
             <a href="/{{ slug }}">{{ item.title }}</a>
             {% if item.cities is defined %}
                 <ul>
                     {% for slugg, itemm in item.cities %}
                         <li><a href="/{{ slugg }}">{{ itemm.title }}</a></li>
                     {% endfor %}
                 </ul>
             {% endif %}
         </li>
      {% endfor %}
   </ul>
</nav>