2

我通过 KnpMenuBundle 将 KnpMenu 与 Symfony2.3 一起使用。

我想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\MenuItem然后Knp\Menu\MenuFactory但这还不够......

我觉得我必须覆盖更多的东西,所以我来咨询一下。捆绑包非常复杂,我觉得这个功能(将类属性添加到 MenuItem)已经由捆绑包管理,尽管我不明白如何。

任何想法?

4

0 回答 0