Когда я делаю
print_r(Yii::app()->request->baseUrl)
Я получаю пустую строку. Сообщение на форуме Yii говорит, что по умолчанию это пусто . Как изменить значение по умолчанию, чтобы использовать абсолютные URL-адреса?
Как говорится в сообщении на этом форуме, он может отличаться для разных платформ или если веб-приложение не находится в папке по умолчанию.
Все это работает для меня:
echo Yii::app()->request->baseUrl."<br/>" ; print_r(Yii::app()->request->baseUrl); echo "<br/>"; var_dump(Yii::app()->getBaseUrl(true)); echo "<br/>"; echo Yii::app()->request->getBaseUrl(true);
Я использовал yiic для создания веб-приложения с настройками по умолчанию, используя следующую команду в терминале, yiic webapp /path/to/webapp
Таким образом, создается необходимая структура каталогов для веб-приложения, а также файлы скелета по умолчанию. Попробуйте, а затем посмотрите, как это работает. Я новичок в yii.
Редактировать:
Это решение, возможно, сработало для op, но правильный способ baseUrl может быть установлен с помощью ответа ecco на этот вопрос .
Вы можете изменить /path/to/application/protected/config/main.php, чтобы изменить значение по умолчанию. Добавьте компонент запроса и настройте basicUrl porperty.
return array( ... 'components' => array( ... 'request' => array( 'baseUrl' => 'http://www.example.com', ), ), );
Это, скорее всего, пустое, потому что ваш загрузочный файл (index.php) находится в вашем веб-корне. Если это не так, вы должны увидеть какую-то ценность. Его изменение победит.
Вы бы использовали:
href="<?php echo 'http://www.myhost.com' . Yii::app()->request->baseUrl; ?>/css/screen.css"
который в большинстве случаев не изменил бы путь, но если вы, скажем, решили разместить ваше приложение Yii в подкаталоге, то оно было бы портативным. (Просто удалите метод http и имя хоста выше, чтобы он работал на том же хосте, на котором пользователь включен.)
Yii :: app () -> baseUrl возвращает только относительный путь от url к index.php, например: 127.0.0.1/index.php возвращает '' 127.0.0.1/yii/index.php возвращает '/ yii'
Если вы используете Url-помощник для генерации URL-адресов, вам нужно будет установить keyUrl-ключ для компонента UrlManager
'urlManager' => [ 'baseUrl' => 'http://example.com',
Затем вы можете создать абсолютный URL-адрес с помощью помощника Url as,
echo Url::to(['site/index', 'src' => 'ref1', '#' => 'name'], true); // output ===> http://example.com/index.php?r=site%2Findex&src=ref1#name
попробуйте echo Yii::$app->baseUrl(true)
Обратите внимание, что истинный параметр – это то, что нужно.