Abrufen der Basis-URL in Yii 2

Lesezeit: 3 Minuten

Benutzer-Avatar
Brett

Ich versuche, die Basis-URL für das Projekt in Yii 2 abzurufen, aber es scheint nicht zu funktionieren. Entsprechend diese Seite früher konntest du:

Yii::app()->getBaseUrl(true);

In Yii 1, aber es scheint so diese Methode in Yii 2 akzeptiert einen Parameter nicht mehr?

Ich habe versucht, es ohne true zu tun, wie zum Beispiel:

Yii::$app->getBaseUrl();

Aber es kommt einfach leer zurück.

Wie können Sie dies in Yii 2 tun?

Um die Basis-URL der Anwendung zu erhalten, sollten Sie verwenden yii\helpers\Url::base() Methode:

use yii\helpers\Url;

Url::base();         // /myapp
Url::base(true);     // http(s)://example.com/myapp - depending on current schema
Url::base('https');  // https://example.com/myapp
Url::base('http');   // http://example.com/myapp
Url::base('');       // //example.com/myapp

Url::home() sollte in diesem Fall NICHT verwendet werden. Application::$homeUrl verwendet standardmäßig die Basis-URL, kann aber leicht geändert werden (z. B. in https://example.com/myapp/home), sodass Sie sich nicht darauf verlassen sollten, dass immer die Basis-URL zurückgegeben wird. Wenn es ein besonderes gibt Url::base() -Methode, um die Basis-URL abzurufen, und verwenden Sie sie dann.

Benutzer-Avatar
DiegoCoderPlus

Meine Vermutung ist, dass Sie sich Aliase ansehen müssen.

Die Verwendung von Aliasen wäre wie folgt:

Yii::getAlias('@web');

Auf einen dieser beiden können Sie sich auch immer verlassen:

Yii::$app->homeUrl;

Url::base();

  • Url btw ist von yii\helpers\Url

    – u_mulder

    9. Januar 2015 um 8:43 Uhr

  • Ich habe es versucht Url::home(true) und Url::base(true) und beide geben so ziemlich dasselbe zurück, außer Url::home(true) enthält ein Ende /. Gibt es sonst noch einen Unterschied?

    – Brett

    9. Januar 2015 um 11:28 Uhr

  • Kennt jemand den Unterschied? Kann ein Beispiel geben?

    – Brett

    10. Januar 2015 um 6:50 Uhr

  • @Brett Yii Framework ist völlig offen und auf Github dokumentiert, Sie sollten dies überprüfen github.com/yiisoft/yii2/blob/master/framework/helpers/… und Vergleichsfunktionen, Url:home verlässt sich auf URI:scheme, um URL zurückzugeben, falls definiert, andernfalls wird Yii::$app->getHomeUrl(); ansonsten ist URL:base dasselbe, wenn scheme = true, aber wenn scheme falsch ist, wird die URL durch $url = Yii::$app->getUrlManager()->getBaseUrl(); Ich empfehle dringend, keine Angst zu haben, den yii-Code selbst auszuprobieren, er ist erstaunlich gut dokumentiert

    – DiegoCoderPlus

    10. Januar 2015 um 11:53 Uhr


  • Vielleicht könnten Sie Ihre Antwort bearbeiten, um sie aufzunehmen Url::base(true) stattdessen, da dies wahrscheinlich diejenige ist, die ich verwenden werde.

    – Brett

    10. Januar 2015 um 15:49 Uhr

So erhalten Sie die Basis-URL Yii2 mit:

Url::home(true)

  • Das ist falsch, Url::home() gibt nicht immer die Basis-URL zurück. Siehe meine Antwort.

    – rob006

    26. Mai 2018 um 20:16 Uhr

Verwenden Sie es wie folgt:

Yii::$app->getUrlManager()->getBaseUrl()

Weitere Informationen zu Basis-, kanonischen und Home-URLs:
http://www.yiiframework.com/doc-2.0/yii-helpers-url.html

Benutzer-Avatar
Radhe9254

Versuche dies:

$baseUrl = Yii::$app->urlManager->createAbsoluteUrl(["https://stackoverflow.com/"]);

Benutzer-Avatar
rahul s negi

vielleicht suchst du danach

Yii::$app->homeUrl

das kannst du auch verwenden

Url::base().

oder dieses

Url::home();

Benutzer-Avatar
rob006

So erreichen Sie Ihre Basis-URL:

Yii::$app->request->baseUrl

1249380cookie-checkAbrufen der Basis-URL in Yii 2

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy