Meine Website befindet sich unter http: //drupal8.local/ . Wie erhalte ich den drupal8.local- Teil dieser URL?
Url::fromRoute('<'current'>')
oder base_path()
gibt den Pfadteil der URL zurück; Beispielsweise geben sie für http: //drupal8.local/a/b/c/d/e/f 'zurück, /a/b/c/d/e/f'
wenn ich nur etwas brauche 'drupal8.local'
.
Wie kann ich diesen Teil der URL erhalten?
Antworten:
Sie können den Hostnamen "drupal8.local" direkt aus der
getHost()
Anfrage abrufen :In einigen Fällen möchten Sie möglicherweise auch das Schema abrufen, fx
https://drupal8.local
:quelle
\Drupal::request()->getSchemeAndHttpHost()
wird zurückkehrenhttp://drupal8.local
.Url::fromRoute('<front>', [], ['absolute' => TRUE]);
Es gibt einige Warnungen bezüglich des direkten Zugriffs auf das Anforderungsobjekt auf folgende Weise
\Drupal::request
:In jeden Form Controller, der
\Drupal\Core\Form\FormBase
automatisch erweitert wird, wird diese Abhängigkeit eingefügt, und auf ihn kann folgendermaßen zugegriffen werden:Ich denke (habe aber nicht getestet), dass eine reguläre Page-Controller-Erweiterung
\Drupal\Core\Controller\ControllerBase
denrequest_stack
Dienst bereitstellen könnte, indem sie die\Drupal\Core\Controller\ControllerBase::create
Funktion überschreibt und dann eine$request
Eigenschaft im Konstruktor festlegt. Dies ist für Formulare sehr gut beschrieben, und der gleiche Vorgang sollte für Seitencontroller gelten: https://www.drupal.org/docs/8/api/services-and-dependency-injection/dependency-injection-for-a- bilden .quelle
Unter Berücksichtigung der " Warnungen über den direkten Zugriff auf das Anfrageobjekt auf diese Weise in \ Drupal :: request ", die Shaun Dychko erwähnte, ist es möglicherweise eine gute Option, den Hostnamen mit Hilfe von PHP aus der globalen Variablen $ base_url abzurufen Funktion parse_url :
quelle
Wenn Sie dies mit Abhängigkeitsinjektion und einem Service tun möchten, können Sie RequestStack verwenden :
Und definiere es so:
Und dann erkläre es so:
quelle