Я использую 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) уже управляется пакетом, хотя я не понимаю, как это сделать.
Любая идея?
Задача ещё не решена.
Других решений пока нет …