symfony - KnpMenu,无法设置当前菜单项

标签 symfony symfony-2.1 knpmenu

我已经看到了有关此问题的其他错误。我也做了同样的事情。当我尝试渲染菜单时,出现以下 fatal error :

Fatal error: Call to undefined method Knp\Menu\MenuItem::setCurrentUri()
in ProjectBundle/Menu/Builder.php on line 23

这就是我的生成器的样子:

<?php
use Knp\Menu\FactoryInterface;
use Symfony\Component\DependencyInjection\ContainerAware;
use Symfony\Component\HttpFoundation\Request;

class Builder extends ContainerAware
{

private $factory;

public function __construct(FactoryInterface $factory)
{
    $this->factory = $factory;
}

public function createMenu(Request $request)
{

    $menu = $this->factory->createItem('root');
    $menu->setCurrentUri($request->getRequestUri());

    $menu->addChild('Home', array('route' => '_home'));
    $menu->addChild('About', array('route' => '_about'));
    $menu->addChild('Bullshit', array('route' => '_bullshit'));

    return $menu;
}
}

我查看了 Github 上的问题跟踪器,似乎这个问题已得到解决,但为什么我又遇到同样的问题?

我的意思是,当我 var_dump($menu) 时,它清楚地表明它是一个 MenuItem 并且查看 KnpMenu 的文档,肯定有一个 setCurrentUri( ) 我的 $menu 方法。

最佳答案

如果问题是由于请求引起的,那么它应该不起作用 。您可以尝试一下:

 public function **CreateMenu**(\Knp\Menu\FactoryInterface $factory, array $options)
{   $menu = $factory->createItem('root');

    $menu->setCurrentUri($this->container->get('request')->getRequestUri());
$menu->addChild('Home', array('route' => '_home'));
$menu->addChild('About', array('route' => '_about'));
..

return $menu;}

关于symfony - KnpMenu,无法设置当前菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12356056/

相关文章:

Symfony2 表单和 &lt;input&gt; 模式属性

php - symfony 2 中搜索功能的最佳方式

symfony - 在任何 Symfony2 Controller 中获取 Yaml(定制变量)中的配置数据

php - 在 Symfony 2.1 中设置语言环境

symfony - 在 SonataAdminBundle : what goes where? 中组织文件

symfony - 渲染自定义属性 KNP 菜单

symfony - ResponseListener 改变 Assets 的内容类型

authentication - 如何修改当前用户的属性并在整个 session 中持久化它们

symfony - 如何禁用 KnpMenuBundle 中标签的 HTML 转义

Symfony 5.0 和 KnpMenuBundle - 如何配置