Mă chinui să aflu relația dintre MenuLink și MenuLinkContent.
Creez un nou articol de meniu, cum ar fi:
$menuItem = MenuLinkContent::create($params);
De asemenea, pot interoga acele elemente precum:
$menuItems = \Drupal::entityTypeManager()->getStorage('menu_link_content')->loadByProperties(['link.uri' => "intern:$path"]);
Și asta funcționează bine. Acum, dacă am nevoie de unul dintre acele obiecte, vreau să-i iau „frații” - alt obiect care împărtășește același părinte.
Am o structură ciudată:
$this->menuLinkManager = \Drupal::service('plugin.manager.menu.link');
$parentId = $menuItem->getParentId();
$parent = $this->menuLinkManager->createInstance($this->menuLinkManager->getDefinition($parentId)['id']);
Și aici primesc părintele, dar nu mai este obiectul MenuLinkContent, ci o instanță a lui MenuLinkInterface. Are unele câmpuri ca MenuLinkContent, dar nu toate. i.e. Nu știu cum să obțin calea linkului și similar.
Acolo pot merge mai departe:
$frați = $this->menuLinkManager->getChildIds($parent->getPluginId());
Dar întrebarea principală este hCum să obțin MenuLinkContent când am acel obiect MenuLinkInterface?
Sub-intrebare - de ce oh de ce este nevoie de acest sistem de meniu paralel și de clase de meniu paralel?