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