2

KnpMenuBundle を通じて Symfony2.3 で KnpMenu を使用しています。

MenuItem最も簡単な方法で、属性を追加してクラスをカスタマイズしたいと思います。

目的は、アプリケーションのエンティティのいずれかにリンクしMenuItem、後でそれを取得できるようにすることです。

たとえば、私はこれをしたい:

$menu = $factory->createItem('root');
$menu->addChild('New Model', array('route' => 'my_route'))
     ->setAttribute('icon', 'glyphicon-plus')
     ->setRelatedEntity($myEntity);   // <== This doesn't exist by default

簡単だが醜い方法は、Knp\Menu\MenuItem.phpこれを編集して追加することです:

/**
 * Entity to which this menuItem is related
 * @var Entity
 */
private $relatedEntity;

/**
 * Set relatedEntity
 *
 * @param string $relatedEntity
 * @return MenuItem
 */
public function setRelatedEntity($relatedEntity) {
    $this->relatedEntity = $relatedEntity;    
    return $this;
}

/**
 * Get relatedEntity
 * @return Entity 
 */
public function getRelatedEntity() {
    return $this->relatedEntity;
}

それが適切な方法ではないことはわかっているので、上書きしようとしましKnp\Menu\MenuItemKnp\Menu\MenuFactoryが、十分ではありません...

もっと色々なものを上書きしないといけない気がするので、ここでアドバイスをお願いします。バンドルは非常に複雑で、この機能 (MenuItem にクラス属性を追加する) は既にバンドルによって管理されているように感じますが、その方法はわかりません。

何か案が?

4

0 に答える 0