KnpMenu: добавить атрибут в класс MenuItem

Я использую KnpMenu с Symfony2.3 через KnpMenuBundle.

Я хотел бы настроить класс 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) уже управляется пакетом, хотя я не понимаю, как это сделать.

Любая идея?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]