Drupal 8에는 새로운 메뉴 시스템이 hook_menu
있으며 더 hook_menu_alter
이상 존재 하지 않습니다.
기존 경로를 변경하려면 Drupal 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...
}
}
노드 모듈 의 RouteSubsciber 클래스를 예로들 수 있습니다.
RouteSubscriber를 인식하려면 YOURMODULE.services.yml
모듈 디렉토리의 루트에 파일 을 작성 해야합니다.
services:
node.route_subscriber:
class: Drupal\YOURMODULE\Routing\RouteSubscriber
tags:
- { name: event_subscriber }
새로운 메뉴 시스템에 대한 더 나은 통찰력을 얻으려면 다음 기사를 추천합니다.
편집 :
로 Berdir 언급 , 메뉴 시스템, D7의 메뉴 시스템과는 아무 상관이없는, 지금은 다른 구조를 가지고 있으므로 더 이상 메뉴 형식 같은 것은 존재하지 않는다.