0

我在自定义 knp-menu 模板时遇到问题。

我只是简单地对本网站中的 knp_menu.html.twig 进行了解释。

如果我这样尝试,我会收到此错误:

在此处输入图像描述

我的 knp_menu.html.twig 看起来像这样:

{% extends 'knp_menu.html.twig' %}

{% block linkElement %}{% import _self as knp_menu %}
   <a href="{{ item.uri }}"{{ knp_menu.attributes(item.linkAttributes) }}>{{ block('label') }}</a>
{% endblock %}

我尝试像这样渲染模板:

{{ knp_menu_render('MainShowBundle:Builder:mainUserMenu', {'template': 'MainShowBundle:Menu:knp_menu.html.twig'}) }}

我希望有一个人可以帮助我。

谢谢。迈克尔

4

3 回答 3

3

您需要先从父模板导入宏,然后才能使用它们。

{% block linkElement %}
    {% import 'knp_menu.html.twig' as knp_menu %}
    <a href="{{ item.uri }}"{{ knp_menu.attributes(item.linkAttributes) }}>
        <span>{{ block('label') }}</span>
    </a>
{% endblock %}


我已经回复了您最初发布问题的地方

于 2014-02-20T23:31:11.597 回答
1

您是否已经尝试过清除缓存?

php 应用程序/控制台缓存:清除

于 2014-02-19T17:26:46.700 回答
1

我正在研究基于 Symfony 的 CMS 之类的 Sonata 项目。在管理区域,我为菜单添加了自定义模板,在该模板中我做了:

{% extends 'knp_menu.html.twig' %}

{% block linkElement %}
    {% import 'knp_menu.html.twig' as knp_menu %}
    <a href="{{ item.uri }}"{{ knp_menu.attributes(item.linkAttributes) }}>
        <span>{{ block('label') }}</span>
    </a>
{% endblock %}

{% block spanElement %}
{% import 'knp_menu.html.twig' as knp_menu %}
<a href="{{ item.uri }}"{ knp_menu.attributes(item.linkAttributes) }{ block('label') }</a>
{% endblock %}

请注意,您可能需要添加“spanElement”以及“linkElement”。

完整的模板实现https://github.com/sonata-project/sandbox-build/blob/2.4/vendor/knplabs/knp-menu/src/Knp/Menu/Resources/views/knp_menu.html.twig

于 2015-12-09T17:01:39.507 回答