Direkt zum Inhalt
Drupal: Einen dynamischen Link erstellen

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.

Profile picture for user admin Stephane K

Écrit le

Il y'a 1 Jahr
Modifié
Il y'a 2 Wochen
Lädt...
WhatsApp
Support Habeuk : +237 694 900 622
WhatsApp Send