Geçerli sayfanın rota adını al


24

Mevcut sayfanın rota adı mevcuttur page.html.twig? Sayfa, varsayılan geri bildirim formu tarafından oluşturulur.

Yanıtlar:


57

Mevcut rota adını almak için şunu kullanın:

$route_name = \Drupal::routeMatch()->getRouteName();

Geçerli sayfanın rota adını temanın ".theme" dosyasında bir değişken olarak ekleyebilirsiniz. Böyle bir _preprocess_page işlevi ekleyin ve drupal önbelleğini temizleyin.

/**
 * Implements hook_preprocess_page().
 *
 */
function mytheme_preprocess_page(&$variables) {
  $variables['route_name'] = \Drupal::routeMatch()->getRouteName();
}

Ardından, page.html.twig adresinde şöyle erişebilirsiniz:

{{ route_name }}

Not: \Drupal::routeMatch()->getRouteName() bazen boş döndürür.

Bir sınıfın içindeyseniz, işleri doğru bir şekilde yapmak için, rota eşleme hizmetini kurucuya enjekte etmek ve ardından şu şekilde çağırmak istersiniz:

$this->currentRouteMatch->getRouteName()

Yapıcı (ve değişken) şöyle olacaktır:

  /**
   * The current route match.
   *
   * @var \Drupal\Core\Routing\RouteMatchInterface
   */
  protected $currentRouteMatch;

  /**
   * Constructs a new ThemeTestSubscriber.
   *
   * @param \Drupal\Core\Routing\RouteMatchInterface $current_route_match
   */
  public function __construct(RouteMatchInterface $current_route_match) {
    $this->currentRouteMatch = $current_route_match;
  }

Hizmet sınıfıysa, özel modülünüzdeki yaml dosyasındaki hizmete aktarırsınız:

services:
  mymodule.service:
    class: Drupal\mymodule\MyCustomService
    arguments: ['@current_route_match']

Tüm drupal rotaları gösteren bir yerde bir CLI (satır modu komutu) var ... ne olduğunu hatırlamıyorum ... Güncelleyeceğim (başkası bilmediği sürece)
sea26.2
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.