O Drupal 8 possui um novo sistema de menus, não existe hook_menu
e não existe hook_menu_alter
mais.
Se você deseja alterar uma rota existente, é um pouco mais complicado em comparação com o Drupal 7.
No seu módulo, você precisa criar um arquivo de classe YOURMODULE/src/Routing/CLASSNAME.php
que se estenda 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...
}
}
Você pode usar a classe RouteSubsciber do módulo do nó como exemplo.
Para permitir que seu RouteSubscriber seja reconhecido, você também precisa criar um YOURMODULE.services.yml
arquivo na raiz do diretório de seus módulos:
services:
node.route_subscriber:
class: Drupal\YOURMODULE\Routing\RouteSubscriber
tags:
- { name: event_subscriber }
Para obter uma melhor visão do novo sistema de menus, recomendo os seguintes artigos:
Edit:
Como mencionado por Berdir , o sistema de menus tem uma estrutura diferente agora, que não tem nada a ver com o sistema de menus do D7, então não existe mais um tipo de menu.