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.

Oana Hulpoi
sumber

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']
oknate
sumber
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