Drupal 8 tiene un nuevo sistema de menús, ya no hook_menu
hay ninguno hook_menu_alter
.
Si desea modificar una ruta existente, es un poco más complicado en comparación con Drupal 7.
En su módulo, debe crear un archivo de clase YOURMODULE/src/Routing/CLASSNAME.php
que se extienda RouteSubscriberBase
:
/**
* @file
* Contains \Drupal\YOURMODULE\Routing\RouteSubscriber.
*/
namespace Drupal\YOURMODULE\Routing;
use Drupal\Core\Routing\RouteSubscriberBase;
use Symfony\Component\Routing\RouteCollection;
/**
* Listens to the dynamic route events.
*/
class RouteSubscriber extends RouteSubscriberBase {
/**
* {@inheritdoc}
*/
protected function alterRoutes(RouteCollection $collection) {
// Get the route you want to alter
$route = $collection->get('system.admin_content');
// alter the route...
}
}
Puede tomar la clase RouteSubsciber del módulo de nodo como ejemplo.
Para permitir que se reconozca su RouteSubscriber, también debe crear un YOURMODULE.services.yml
archivo en la raíz de su directorio de módulos:
services:
node.route_subscriber:
class: Drupal\YOURMODULE\Routing\RouteSubscriber
tags:
- { name: event_subscriber }
Para obtener una mejor visión del nuevo sistema de menús, recomendaría los siguientes artículos:
Editar:
como mencionó Berdir , el sistema de menús tiene una estructura diferente ahora, que no tiene nada que ver con el sistema de menús de D7, por lo que ya no existe un tipo de menú.