我通过 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)已经由捆绑包管理,尽管我不明白如何。
任何想法?