KnpMenuBundle и предлагаемый пример учебника: что-то не так?

KNP MenuBundle — это пакет Symfony2 для очень динамичной обработки меню. В комплект поставки входит простой учебный пример, который можно найти здесь. В предложенном примере в классе Builder авторы предположили, что для объекта $menu должна быть вызвана функция setCurrentUri(). Однако $menu является экземпляром класса MenuItem, который не реализует вышеупомянутую функцию.

Чтобы сделать ответ автономным, я сообщаю код предоставленного примера класса здесь:

<?php
// src/Acme/DemoBundle/Menu/Builder.php
namespace Acme\DemoBundle\Menu;

use Knp\Menu\FactoryInterface;
use Symfony\Component\DependencyInjection\ContainerAware;

class Builder extends ContainerAware
{
    public function mainMenu(FactoryInterface $factory, array $options)
    {
        $menu = $factory->createItem('root');
        $menu->setCurrentUri($this->container->get('request')->getRequestUri());

        $menu->addChild('Home', array('route' => 'homepage'));
        $menu->addChild('About Me', array(
            'route' => 'page_show',
            'routeParameters' => array('id' => 42)
        ));
        // ... add more children

        return $menu;
    }
}

PS: обратите внимание, что в этом примере отсутствует важный импорт, о котором я сообщаю ниже для полноты картины:

use Symfony\Component\HttpFoundation\Request;

person JeanValjean    schedule 22.06.2012    source источник


Ответы (1)


Я также ищу обновление документации, но в качестве временного решения вы можете установить версии в deps следующим образом:

[KnpMenu]
    git=https://github.com/KnpLabs/KnpMenu.git
    version=v1.1.2

[KnpMenuBundle]
    git=https://github.com/KnpLabs/KnpMenuBundle.git
    target=/bundles/Knp/Bundle/MenuBundle
    version=v1.1.0
person Anton Babenko    schedule 22.06.2012
comment
Я пытался установить эти версии, но получил исключение не для репозитория git. - person JeanValjean; 22.06.2012
comment
Хорошо, теперь это работает! Ваш ответ в порядке! Я приму это. 1.1.2 последняя версия или нет? - person JeanValjean; 22.06.2012
comment
Да, 1.1.2 — это последний тег, который хорошо работает с комплектом. - person Anton Babenko; 23.06.2012