Wir erstellen einen dynamischen Link, über den der Link „Meine Bestellungen” im Benutzermenü angezeigt wird.
Um einen Link zu erstellen, müssen wir eine Datei erstellen: [MODULE MACHINE NAME].links.menu.yml
In diese Datei fügen wir Folgendes ein:
[MODULE MACHINE NAME].user.orders:
title: 'Mes commandes'
weight: -10
route_name: view.commerce_user_orders.order_page
menu_name: account
view.commerce_user_orders.order_page stellt die zu verwendende Route dar, diese Route benötigt den Parameter user.
Um diesen Parameter dynamisch zu übergeben, fügen wir eine Klasse hinzu:
[MODULE MACHINE NAME].user.orders:
title: 'Mes commandes'
weight: -10
route_name: view.commerce_user_orders.order_page
menu_name: account
class: Drupal\[MODULE MACHINE NAME]\Plugin\Menu\OrdersMenuLink
OrdersMenuLink.php
<?php
namespace Drupal\hbk_souscription_pfna\Plugin\Menu;
use Drupal\Core\Menu\MenuLinkBase;
/**
* Defines menu links provided by views.
*
* @see \Drupal\views\Plugin\Derivative\ViewsMenuLink
*/
class OrdersMenuLink extends MenuLinkBase {
/**
*
* {@inheritdoc}
* @see \Drupal\Core\Menu\MenuLinkInterface::getDescription()
*/
public function getDescription() {
return '';
}
/**
*
* {@inheritdoc}
* @see \Drupal\Core\Menu\MenuLinkInterface::getTitle()
*/
public function getTitle() {
return $this->t('My orders');
}
public function getRouteParameters() {
return [
'user' => \Drupal::currentUser()->id()
];
}
/**
*
* {@inheritdoc}
* @see \Drupal\Core\Menu\MenuLinkInterface::updateLink()
*/
public function updateLink(array $new_definition_values, $persist) {
}
}
In dieser Klasse ermöglicht die Methode getRouteParameters(), ie Rückgabe der ID des angemeldeten Benutzers.