메뉴 항목 유형을 변경하는 hook_menu_alter ()와 동등한 것은 무엇입니까?


10

Drupal 8에서 메뉴 유형을 변경하고 싶습니다. Drupal 7에서는 hook_menu_alter를 사용하여 이를 수행 할 수 있습니다.

function module_menu_alter(&$items) {
  $items['admin/config/people/ip-blocking/default'] = array(
    'title' => 'Block IP Address',
    'type' => MENU_DEFAULT_LOCAL_TASK,
  );
}

마찬가지로 Drupal 8에서 메뉴 유형을 변경하고 싶습니다. 어떻게해야합니까? 감사합니다.


3
읽어보십시오 drupal.org/node/2118147
Adi

Berdir이 언급했듯이 더 이상 메뉴 유형이 없습니다. 보관하려는 대상을 지정할 수 있습니까?
Linus

답변:


7

Linus의 답변은 훌륭하지만 특정 질문에 대한 피드백을 제공하지는 않습니다.

마찬가지로 Drupal 8에서 메뉴 유형을 변경하고 싶습니다.

Drupal 8에는 메뉴 유형과 같은 것이 없습니다. 유형이었던 모든 것이 이제 완전히 다릅니다. 경로, 메뉴 링크, 로컬 작업, 로컬 작업. 그리고 종종 여러 가지가 있습니다. 항상 경로가 있습니다 (이 유형의 콜백을 호출하는 데 사용되는 7.x). 또한 해당 경로에 대한 메뉴 링크, 로컬 작업 또는 작업을 추가합니다.

따라서 메뉴 링크를 로컬 작업으로 변환하거나 로컬 작업으로의 경로를 변환 할 수 없습니다. 당신이 할 수있는 유일한 것은 예를 들어 메뉴 링크를 멀리 변경 (위에서 언급 한 경로 변경과 관련이 없음)하고 대신 새로운 로컬 작업을 만드는 것입니다.

링크와 그 각각을 수행하는 방법에 대한 자세한 내용은 Linus의 답변을 참조하십시오.


네 말이 맞아, 나는 그것을 언급하는 것을 완전히 잊었다. 추가해 주셔서 감사합니다.
Linus

19

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의 메뉴 시스템과는 아무 상관이없는, 지금은 다른 구조를 가지고 있으므로 더 이상 메뉴 형식 같은 것은 존재하지 않는다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.