php - 使用 knpmenu bundle 在 symfony 2.1 中创建面包屑

标签 php symfony navigation breadcrumbs knpmenubundle

在 symfony 2.1.x 中使用 knpmenu bundle 创建面包屑的最佳方法是什么?除了使用第 3 方 bundle 。

更新:

你好,theunraveler,很抱歉回答晚了。现在我一直在以你为榜样,但我在某一时刻陷入了困境。在这里,下面的代码抛出一个异常,即

Missing argument 2 for Acme\DemoBundle\Menu\MenuBuilder::getBreadCrumbs()    

{% set item = knp_menu_get('main') %}
{{ knp_menu_render(item) }}
{% block breadcrumbs %}
    {% set breadcrumbs = knp_menu_get('breadcrumbs', [], {'request':    app.request, 'menu': item }) %}
    {{ dump(breadcrumbs) }}
{% endblock %}

为什么它不接受“item”变量?

最佳答案

自版本 2.0 起,getBreadcrumbsArray 已移至 Knp\Menu\Util\MenuManipulator

可能锻炼到 this解决方案是创建一个 Twig 扩展:

<?php

namespace Kimwild\CommonBundle\Twig;
use Knp\Menu\Util\MenuManipulator;
use Knp\Menu\ItemInterface;

class MenuManipulatorExtension extends \Twig_Extension
{

    public function getFunctions()
    {
        return array(
            new \Twig_SimpleFunction('menu_manipulator', array($this, 'menuManipulator')),
        );
    }

    public function menuManipulator(ItemInterface $item)
    {
        $manipulator = new MenuManipulator();
        return $manipulator->getBreadcrumbsArray($item);
    }


    public function getName()
    {
        return 'menu_manipulator';
    }

}

注册 Twig 扩展:

kimwild_common.menu_manipulator_extension:
    class: Kimwild\CommonBundle\Twig\MenuManipulatorExtension
    public: false
    tags:
        - { name: twig.extension }

在 breadcrumb.html.twig 中:

{% block root %}
    {%- for  link in menu_manipulator(item) %}
    /* whatever you want to do ... */
    {%- endfor %}
{% endblock %}

关于php - 使用 knpmenu bundle 在 symfony 2.1 中创建面包屑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13359366/

相关文章:

symfony - security.yml 中的未知实体命名空间与 Symfony 2 中的自定义实体文件夹

symfony - 扩展 FOSUserBundle 中的 symfony 邮件程序类

c# - 明确将链接视为绝对链接?

navigation - 如何为 NavigationLink 设置条件? swift

php - 将搜索结果分配给变量 - PHP Fulltext Search Boolean

php - Laravel 解析错误 : syntax error, unexpected T_CLASS, expecting T_STRING

php - Plupload 浏览按钮在 IE10 中不起作用

database - 从一个实体到来自不同表的许多实体的symfony关系

安卓导航提示

php - jQuery,在 ul 中 foreach div