Php 在Twig模板引擎的菜单中保存完整URL路径

Php 在Twig模板引擎的菜单中保存完整URL路径,php,symfony,twig,Php,Symfony,Twig,/宏/子部门.html 在common.html中,一切正常。在deparment.html中,我需要在{{dept.seo_title}中获得相同的href。如果我从department.html中的common.html转到/at/transmission oils/13/dept,我会看到指向部门的错误URL ← Трансмиссионные масла (href: /transmission-oils/2/dept right!) для МКПП (механика) (href:

/宏/子部门.html

在common.html中,一切正常。在deparment.html中,我需要在{{dept.seo_title}中获得相同的href。如果我从department.html中的common.html转到/at/transmission oils/13/dept,我会看到指向部门的错误URL

← Трансмиссионные масла (href: /transmission-oils/2/dept right!)
для МКПП (механика) (href: mt/11/dept wrong!, need to be /mt/transmission-oils/11/dept)
для АКПП (автомат) (href: at/12/dept wrong!, need to be /at/transmission-oils/12/dept)
Test (href: /test//13/dept wrong!, need to be /test/at/transmission-oils/13/dept)

那么,如何更改department.html中的代码以打印子部门的完整路径?也许递归函数会得到所有父部门的结果

据我所知,您错过了HREF中的父路径

我认为当你告诉我的时候有一个问题:

Subdept1_2_1 (link: subdept1_2_1-subdept1_2-subdept1-dept1)
你的意思是树的上升顺序,比如:

Subdept1_2_1 (link: dept1-subdept1-subdept1_2-subdept1_2_1)
无论如何,您可以尝试使用以下代码:

主枝

而不是:

{% set href = prefix ~ '-' ~ dept.seo_title %}

注意:为了更好的再现性,我更改了文件名

你能把普通的部门打印出来吗?这样我们就能知道背景了。是的,我更新了我的帖子谢谢。您想将完整链接保存在哪里?我想在标签的href中显示完整链接。有可能计算这个完整的链接吗?对不起,但我真的不明白。您提供的上下文不包含任何生成此类链接的内容。我也更改了文件名。common.html(main.twig)中的代码运行良好。在departmens.html中,href(其他东西也很好)有一个问题,给定的代码为您提供了完整的菜单生成(带有完整的href)。我不明白你想要什么。请访问aliexpress.com。您将看到带有下拉子类别的菜单。当您转到任何子类别时,将在左侧块中看到子类别贴图。示例:电子->平板电脑。在左侧:相关类别中,如果我看到所有类别(在网站标题中),但不在main.twig的左栏(在类别页面中),则该工具非常有效。我在Subdept1_2_1链接上获得了很棒的href-Subdept1_2_1-Subdept1_2-Subdept1-dept1。但在同一链接的departments页面中,我有subdept1_2_1,没有-subdept1_2-subdept1-dept1。因为在{dept.seo_title}中,我们有subdept1_2_1,没有任何父母
← Трансмиссионные масла (href: /transmission-oils/2/dept right!)
для МКПП (механика) (href: mt/11/dept wrong!, need to be /mt/transmission-oils/11/dept)
для АКПП (автомат) (href: at/12/dept wrong!, need to be /at/transmission-oils/12/dept)
Test (href: /test//13/dept wrong!, need to be /test/at/transmission-oils/13/dept)
Subdept1_2_1 (link: subdept1_2_1-subdept1_2-subdept1-dept1)
Subdept1_2_1 (link: dept1-subdept1-subdept1_2-subdept1_2_1)
{% import 'macros.twig' as macros %}    
{% for dept in departments %}
  {% if dept.parent_id == 0 %}
  <li><a href="/{{ dept.seo_title }}/{{ dept.id }}/dept" class="black">{{ dept.title }}</a>
    <div class="dropdown-menu">
      <ol class="nav">{{ macros.displayChildren(departments, dept.id, 0, dept.title) }}</ol>
    </div>
  </li>
  {% endif %}
{% endfor %}
{% macro displayChildren(departments, parent_id, deep, prefix) %}
    {% for dept in departments %}
        {% if dept.parent_id == parent_id %}
            {% set href = prefix ~ '-' ~ dept.seo_title %}
            <li><a href="/{{ href }}/{{ dept.id }}/dept" class="black" style="margin-left: {{ deep * 10 }}px;">{{ dept.title }}</a></li>
            {{ _self.displayChildren(departments, dept.id, deep + 1, href) }}
        {% endif %}
    {% endfor %}
{% endmacro %}
{% set href = dept.seo_title ~ '-' ~ prefix %}
{% set href = prefix ~ '-' ~ dept.seo_title %}