Jak mogę uzyskać bieżący alias i / lub ścieżkę w Drupal 8?
W Drupal 7 zrobiłem to z drupal_get_path_alias()
. Jaki kod powinienem zastosować w Drupal 8?
źródło
Jak mogę uzyskać bieżący alias i / lub ścieżkę w Drupal 8?
W Drupal 7 zrobiłem to z drupal_get_path_alias()
. Jaki kod powinienem zastosować w Drupal 8?
Niektóre inne odpowiedzi były poprawne tylko podczas poprzednich wersji alfa / beta Drupala 8 lub wydawały się niekompletne. Od wersji beta7 (i, mam nadzieję, że na stałe), powinny obowiązywać następujące zasady:
Dla bieżącej surowej ścieżki (niezaaloryzowanej ścieżki Drupala):
$current_path = \Drupal::service('path.current')->getPath()
W przypadku bieżącego identyfikatora URI , który jest prawie bezpośrednią reprezentacją żądania (może nawet zawierać ciąg zapytania):
$current_uri = \Drupal::request()->getRequestUri();
Oczywiście nie ma gwarancji, że ta $current_uri
wartość da ci alias, nawet jeśli jest on dostępny dla żądania, ponieważ reprezentuje tylko to, czego zażądał użytkownik. Więc aby ściśle zrobić to, o co prosisz (uzyskaj alias, jeśli jest dostępny, i ścieżkę, jeśli nie). Myślę, że możesz:
$current_path = \Drupal::service('path.current')->getPath();
$result = \Drupal::service('path.alias_manager')->getAliasByPath($current_path);
Oczywiście w zależności od rodzaju wykonywanego przetwarzania najlepiej jest pracować z trasami zamiast ścieżkami, ale przypuszczam, że to zupełnie inny temat.
::getAliasByPath()
która nie będzie już akceptować ciągu ścieżki bez wiodącego ukośnika (od wersji beta13 wierzę).getAliasByPath
zwraca ścieżkę bez prefiksu języka. Masz pomysł, jak to rozwiązać?Właściwy sposób dla adresu URL bez aliasu adresu URL.
źródło
\Drupal::request()->getRequestUri();
szacunek instaluje Drupal w podfolderze?W Drupal 8 możesz to zrobić za pomocą Twig:
przykład:
from: https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates
źródło
{{ url('<current>') }}
nawet jeśli nie jest wymieniona w obszarze Wzory zastępowania.Aby uzyskać bieżącą ścieżkę w Drupal 7, używasz
current_path()
, ale w Drupal 8 używasz$url = Url::fromRoute('<current>');
.Źródło: https://www.drupal.org/node/2382211
źródło
current_path()
idrupal_get_path_alias()
są to różne funkcje.Aby uzyskać bieżącą ścieżkę (ścieżkę aliasu):
Aby uzyskać bieżącą ścieżkę (ścieżkę systemową):
źródło
W przypadku Drupala 8 jest to najczystsze rozwiązanie, jakie udało mi się znaleźć:
źródło
\Drupal\Core\Url::fromRoute('<current>', [], ['absolute' => 'true'])->toString()
W szablonie Twig / Drupal 8:
URL bieżącej strony
tylko ŚCIEŻKA
Zobacz: https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates
źródło
Jeśli chcesz też bezwzględny adres URL z kwerendą:
źródło