Mis*_*een 4 php navigation breadcrumbs symfony knpmenubundle
在symfony 2.1.x中使用knpmenu bundle创建面包屑的最佳方法是什么?除了使用第3方派对.
更新:
嗨,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 %}
Run Code Online (Sandbox Code Playgroud)
为什么它不接受"item"变量?
b.b*_*4rd 10
自版本以来2.0,getBreadcrumbsArray已被移至Knp\Menu\Util\MenuManipulator.
对此解决方案的可能锻炼是创建一个树枝扩展:
<?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';
}
}
Run Code Online (Sandbox Code Playgroud)
注册枝条延伸:
kimwild_common.menu_manipulator_extension:
class: Kimwild\CommonBundle\Twig\MenuManipulatorExtension
public: false
tags:
- { name: twig.extension }
Run Code Online (Sandbox Code Playgroud)
在breadcrumb.html.twig中:
{% block root %}
{%- for link in menu_manipulator(item) %}
/* whatever you want to do ... */
{%- endfor %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6947 次 |
| 最近记录: |