Drupal 8 memiliki sistem menu baru, tidak ada hook_menu
dan tidak ada hook_menu_alter
lagi.
Jika Anda ingin mengubah rute yang ada, ini sedikit lebih rumit dibandingkan dengan Drupal 7.
Dalam modul Anda, Anda harus membuat file kelas pada saat YOURMODULE/src/Routing/CLASSNAME.php
itu meluas 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...
}
}
Anda bisa mengambil kelas RouteSubsciber dari modul simpul sebagai contoh.
Agar RouteSubscriber Anda dikenali, Anda juga harus membuat YOURMODULE.services.yml
file di root direktori modul Anda:
services:
node.route_subscriber:
class: Drupal\YOURMODULE\Routing\RouteSubscriber
tags:
- { name: event_subscriber }
Untuk mendapatkan wawasan yang lebih baik tentang sistem menu baru, saya akan merekomendasikan artikel berikut:
Sunting:
Seperti disebutkan oleh Berdir , sistem menu memiliki struktur yang berbeda sekarang, yang tidak ada hubungannya dengan sistem menu D7, sehingga tidak ada lagi yang namanya jenis menu.