Drupal 8 में एक नया मेनू सिस्टम है, अब hook_menu
और hook_menu_alter
नहीं है।
यदि आप किसी मौजूदा मार्ग को बदलना चाहते हैं, तो यह ड्रुपल 7 की तुलना में थोड़ा अधिक जटिल है।
अपने मॉड्यूल में आप पर एक वर्ग फ़ाइल बनाने के लिए है YOURMODULE/src/Routing/CLASSNAME.php
कि फैली हुई है 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...
}
}
आप एक उदाहरण के रूप में नोड मॉड्यूल के रूटसब्सबर्स वर्ग ले सकते हैं ।
अपने RouteSubscriber को मान्यता देने के लिए आपको YOURMODULE.services.yml
अपने मॉड्यूल निर्देशिका की जड़ में एक फ़ाइल बनानी होगी :
services:
node.route_subscriber:
class: Drupal\YOURMODULE\Routing\RouteSubscriber
tags:
- { name: event_subscriber }
नई मेनू प्रणाली के लिए एक बेहतर जानकारी प्राप्त करने के लिए मैं निम्नलिखित लेखों की सिफारिश करूंगा:
संपादित करें:
जैसा कि बर्दिर द्वारा उल्लेख किया गया है , मेनू सिस्टम में अब एक अलग संरचना है, जिसका डी 7 के मेनू सिस्टम से कोई लेना-देना नहीं है, इसलिए मेनू प्रकार जैसी कोई चीज अब नहीं है।