xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Открывать определённый адрес в административной теме

Опубликовано в

Если роут свой, то просто добавляем для него опцию _admin_route: TRUE:

modulename.routing.yml

modulename.example_route:
  ...
  options:
    _admin_route: TRUE

Если роут объявлен в другом модуле, то альтерим его в EventSubscriber-е:

src/EventSubscriber/ModulenameRouteSubscriber.php

<?php
 
namespace Drupal\modulename\EventSubscriber;
 
use Drupal\Core\Routing\RouteSubscriberBase;
use Symfony\Component\Routing\RouteCollection;
 
class ModulenameRouteSubscriber extends RouteSubscriberBase {
 
  protected function alterRoutes(RouteCollection $collection) {
    // Set admin theme for comment edit form
    if ($route = $collection->get('entity.comment.edit_form')) {
      $route->setOption('_admin_route', TRUE);
    }
  }
 
}

modulename.services.yml

services:
  modulename.route_subscriber:
    class: Drupal\modulename\EventSubscriber\ModulenameRouteSubscriber
    tags:
      - { name: event_subscriber }

Подробнее.

Написанное актуально для Drupal 8
Похожие записи

Комментарии RSS

$collection->all()

RouteCollection это итератор, поэтому вызывать all() не обязательно.

Можно вообще без цикла.

$collection->get('entity.comment.edit_form')
  ->setOption('_admin_route', TRUE);

Супер, исправил

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании