Uzyskaj nazwę trasy bieżącej strony

24

Nazwa trasy bieżącej strony jest dostępna w page.html.twig? Strona jest generowana przez domyślny formularz opinii.

Oana Hulpoi
źródło

Odpowiedzi:

57

Aby uzyskać bieżącą nazwę trasy, użyj:

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

Możesz dodać nazwę trasy bieżącej strony jako zmienną w pliku „.theme” motywu. Dodaj funkcję _preprocess_page w ten sposób i wyczyść pamięć podręczną drupal.

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

Następnie możesz uzyskać dostęp do page.html.twig w następujący sposób:

{{ route_name }}

Uwaga: \Drupal::routeMatch()->getRouteName() czasami zwraca wartość null.

Jeśli jesteś w klasie, aby robić wszystko poprawnie, musisz wstrzyknąć konstruktorowi usługę dopasowania trasy, a następnie wywołać ją w ten sposób:

$this->currentRouteMatch->getRouteName()

Konstruktor (i zmienna) będzie taki:

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

Jeśli jest to klasa usługi, możesz przekazać ją do usługi w pliku yaml w niestandardowym module:

services:
  mymodule.service:
    class: Drupal\mymodule\MyCustomService
    arguments: ['@current_route_match']
oknate
źródło
Gdzieś jest CLI (polecenie trybu liniowego), które pokazuje wszystkie trasy Drupala ... Nie mogę sobie przypomnieć, co to było ... Zaktualizuję (chyba, że ​​ktoś inny wie)
sea26.2