Как установить базовый URL в Yii Framework - PullRequest
8 голосов
/ 30 сентября 2011

Когда я делаю

print_r(Yii::app()->request->baseUrl)

Я получаю пустую строку. В сообщении на форуме Yii говорится, что по умолчанию пусто . Как я могу изменить его значение по умолчанию, чтобы я мог использовать абсолютные URL-адреса?

Ответы [ 7 ]

31 голосов
/ 26 июня 2012

Вы можете отредактировать /path/to/application/protected/config/main.php, чтобы изменить значение по умолчанию. Добавьте компонент запроса и настройте baseUrl porperty.

return array(
    ...
    'components' => array(
        ...
        'request' => array(
            'baseUrl' => 'http://www.example.com',
        ),
    ),
);
12 голосов
/ 01 октября 2011

Как отмечается в сообщении на этом форуме, оно может отличаться для разных платформ или если веб-приложение не находится в папке по умолчанию.
Все эти вещи работают для меня:

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.

Edit:

Это решение могло бы сработать для операции, но правильный способ установки baseUrl показан в ответе ecco на этот вопрос .

3 голосов
/ 01 октября 2011

Скорее всего, он пуст, потому что ваш файл начальной загрузки (index.php) находится в вашем корневом веб-каталоге. Если это не так, вы должны увидеть какую-то ценность. Изменение этого приведет к поражению его цели.

Вы бы использовали как:

href="<?php echo 'http://www.myhost.com' . Yii::app()->request->baseUrl; ?>/css/screen.css"

, который в большинстве случаев не изменил бы путь, но если бы вы, скажем, решили поместить свое приложение Yii в подкаталог, то оно было бы переносимым. (Просто удалите указанный выше метод http и имя хоста, чтобы он работал на том же хосте, на котором находится пользователь.)

1 голос
/ 10 октября 2011

Yii :: app () -> baseUrl возвращает только относительный путь от URL до index.php например: 127.0.0.1/index.php возвращает '' 127.0.0.1/yii/index.php возвращает '/ yii'

0 голосов
/ 30 марта 2018

Использование Yii 2.0.13.1 приведенный ниже код работает нормально

<?php echo Yii::$app->request->baseUrl; ?>
0 голосов
/ 21 апреля 2017

try echo Yii::$app->baseUrl(true)
Обратите внимание, что истинный параметр - это то, что нужно.

0 голосов
/ 11 февраля 2017

Если вы используете Url Helper для генерации URL-адресов, вам нужно установить ключ baseUrl для компонента UrlManager

 'urlManager' => [       
        'baseUrl' => 'http://example.com', 

Затем вы можете создать абсолютный URL-адрес с помощью Url Helper as,

echo Url::to(['site/index', 'src' => 'ref1', '#' => 'name'], true); // output ===> http://example.com/index.php?r=site%2Findex&src=ref1#name

...