Dapatkan nama rute dari halaman saat ini


24

Nama rute dari halaman saat ini tersedia page.html.twig? Halaman ini dihasilkan oleh formulir umpan balik default.

Jawaban:


57

Untuk mendapatkan nama rute saat ini, gunakan:

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

Anda dapat menambahkan nama rute halaman saat ini sebagai variabel dalam file "tema" tema Anda. Tambahkan fungsi _preprocess_page seperti ini, dan hapus cache drupal.

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

Maka Anda dapat mengakses di page.html.twig seperti ini:

{{ route_name }}

Catatan: \Drupal::routeMatch()->getRouteName() terkadang akan mengembalikan nol.

Jika Anda berada di dalam kelas, untuk melakukan hal-hal dengan benar, Anda ingin menyuntikkan layanan pencocokan rute di konstruktor dan kemudian menyebutnya seperti ini:

$this->currentRouteMatch->getRouteName()

Konstruktor (dan variabel) akan seperti ini:

  /**
   * 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;
  }

Jika ini adalah kelas layanan, Anda kemudian akan meneruskannya ke layanan di file yaml di modul khusus Anda:

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

Ada CLI (line mode command) di suatu tempat yang menunjukkan semua rute drupal ... sepertinya tidak dapat mengingat apa itu ... Saya akan memperbarui (kecuali orang lain tahu)
— sea26.2
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.