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é.Loading ...