Nama rute dari halaman saat ini tersedia page.html.twig
? Halaman ini dihasilkan oleh formulir umpan balik default.
Nama rute dari halaman saat ini tersedia page.html.twig
? Halaman ini dihasilkan oleh formulir umpan balik default.
Jawaban:
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']