twig从数组创建菜单项

时间:2017-01-27 13:54:37

标签: loops syntax twig template-engine

在Symfony 3.2(使用twig)中,我正在尝试从数组中动态生成菜单项。

数组:

  {% set links = {
      dashboard: { path: 'dashboard', title: 'Home' },
      page1: { path: 'page1', title: 'Page1' },
      page2: { path: 'page2', title: 'Page1' },
    }
  %}

菜单项循环:

        {% for link in links %}
          <li>
            <a {% if app.request.attributes.get('_route') == link.path %}
                class="active"
               {% endif %} 
               href="{{ path('{{link.path}}') }}">{{ link.title }}
            </a>
          </li>
        {% endfor %}

我收到错误An exception has been thrown during the rendering of a template ("Unable to generate a URL for the named route "{{link.path}}" as such route does not exist.")

使用路径({{link.path}}),我收到错误A hash key must be a quoted string, a number, a name, or an expression enclosed in parentheses (unexpected token "punctuation" of value "{" in

3 个答案:

答案 0 :(得分:4)

{{ path已经{{ 在twig中,<?php echo <?php echo "oops"等于php函数echo 就像拥有href="{{ path(link.path) }}">{{ link.title }}

一样
I18n::locale('da_DK');

答案 1 :(得分:4)

问题

  • 开发人员在将变量传递给Twig函数时收到错误消息。

解决方案

  • 请注意Twig表达式和模板占位符的语法
  • 在函数内声明时,不需要使用花括号占位符语法对twig变量进行转义。

示例:将之前之后

进行比较

之前

href="{{ path('{{link.path}}') }}">{{ link.title }}

href="{{ path(link.path) }}">{{ link.title }}

答案 2 :(得分:0)

您的树枝包含一些错误,请尝试以下

{% set links = [
 { "path": 'dashboard', "title": 'Home' },
 { "path": 'page1', "title": 'Page1' }
] %}
{% for link in links %}
   <li>
     <a 
        href="{{ path(link.path) }}">{{ link.title }}
     </a>
  </li>
{% endfor %}
  1. 你的数组应该是Iterable所以请使用links = [...]
  2. 应该引用数组中的
  3. vars(键)(因为您要添加它们)
  4. 如上所述,你已经在一个街区附近的路径中,所以删除引号(你指的是var)和{{}}
  5. 最后一个&#34;,&#34;不是强制性的(有些枝条实现认为它是错误的)