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.
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.
yiiframework.com/doc-2.0/guide-helper-url.html
– u_mulder
9. Januar 2015 um 8:45 Uhr
versuche Yii::$app->request->baseUrl;
– devst3r
21. April 2017 um 9:57 Uhr