Wie kann ich den aktuellen Alias und / oder Pfad in Drupal 8 erhalten?
In Drupal 7 habe ich das mit gemacht drupal_get_path_alias()
. Was ist der entsprechende Code, den ich in Drupal 8 verwenden sollte?
quelle
Wie kann ich den aktuellen Alias und / oder Pfad in Drupal 8 erhalten?
In Drupal 7 habe ich das mit gemacht drupal_get_path_alias()
. Was ist der entsprechende Code, den ich in Drupal 8 verwenden sollte?
Einige der anderen Antworten waren nur in früheren Alpha / Beta-Versionen von Drupal 8 korrekt oder schienen unvollständig zu sein. Ab Beta7 (und hoffentlich dauerhaft) sollten folgende Regeln gelten:
Für den aktuellen unformatierten Pfad (den nicht aliasierten Drupal-Pfad):
$current_path = \Drupal::service('path.current')->getPath()
Für die aktuelle URI , die so ziemlich eine direkte Darstellung der Anforderung ist (sie kann sogar eine Abfragezeichenfolge enthalten):
$current_uri = \Drupal::request()->getRequestUri();
Es gibt natürlich keine Garantie, dass dieser $current_uri
Wert Ihnen einen Alias gibt, auch wenn einer für die Anforderung verfügbar ist, da er nur das darstellt, was der Benutzer angefordert hat. Um also genau das zu tun, wonach Sie fragen (Alias abrufen, falls verfügbar, und Pfad, falls nicht), können Sie meines Erachtens Folgendes tun:
$current_path = \Drupal::service('path.current')->getPath();
$result = \Drupal::service('path.alias_manager')->getAliasByPath($current_path);
Natürlich ist es abhängig von der Art der Verarbeitung am besten, mit Routen anstatt mit Pfaden zu arbeiten, aber ich nehme an, das ist ein ganz anderes Thema.
::getAliasByPath()
die keine Pfadzeichenfolge ohne einen führenden Schrägstrich mehr akzeptiert (seit Beta13, glaube ich).getAliasByPath
Gibt den Pfad ohne Sprachpräfix zurück. Irgendeine Idee, wie man das löst?Der richtige Weg für die URL ohne den URL-Alias.
quelle
\Drupal::request()->getRequestUri();
respect Drupal in einem Unterordner?In Drupal 8 können Sie dies mit Twig tun:
Beispiel:
von: https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates
quelle
{{ url('<current>') }}
, obwohl nicht unter Ersetzungsmuster aufgeführt.Um den aktuellen Pfad in Drupal 7 zu erhalten, verwenden Sie
current_path()
, in Drupal 8 verwenden Sie$url = Url::fromRoute('<current>');
.Quelle: https://www.drupal.org/node/2382211
quelle
current_path()
unddrupal_get_path_alias()
sie sind verschiedene Funktionen.So rufen Sie den aktuellen Pfad (Alias-Pfad) ab:
So rufen Sie den aktuellen Pfad (Systempfad) ab:
quelle
Für Drupal 8 ist dies die sauberste Lösung, die ich finden konnte:
quelle
\Drupal\Core\Url::fromRoute('<current>', [], ['absolute' => 'true'])->toString()
In Zweigvorlage / Drupal 8:
URL der aktuellen Seite
nur PFAD
Siehe: https://www.drupal.org/docs/8/theming/twig/functions-in-twig-templates
quelle
Wenn Sie die absolute URL auch mit dem Querystring wollen:
quelle