1

KNP MenuBundleは、非常に動的な方法でメニューを処理するためのSymfony2バンドルです。バンドルには、ここで提供されている簡単なチュートリアルの例が含まれています。提案された例では、Builderクラス内で、作成者は関数setCurrentUri()$menuオブジェクトで呼び出す必要があると想定していました。ただし、$ 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;
4

1 に答える 1

2

ドキュメントの更新も探していますが、一時的な解決策として、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
于 2012-06-22T17:28:19.367 に答える