Aller au contenu principal

Drupal : créer un lien dynamique

Nous allons creer un lien dynamique permettant d'afficher le lien "Mes commandes" dans le menu utilisateurs.

Pour creer un lien nous avons besoin de creer un fichier : [MODULE MACHINE NAME].links.menu.yml

Dans ce fichier nous allons ajouter :

[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 represente la route à utiliser, cette route a besoin du paramettre user.
Pour passer ce paramettre de maniere dynamique, nous allons ajouter une class:
[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) {
  }
}
 Dans cette classe la methode getRouteParameters(), permet de renvoyer id de l'utilisateur connecté.
 
Stephane K
Il y'a 2 weeks
Modifié
Il y'a 2 weeks
Loading ...