Получить базовый URL в консольном приложении Yii

Как получить базовый URL в приложении Yii CConsoleApplication?

Я попробовал Yii::app()->request->getBaseUrl(true) и получил следующую ошибку.

Неопределенный индекс: SERVER_NAME (/var/www/yii/framework/web/CHttpRequest.php:279)


person Harish Anchu    schedule 19.12.2012    source источник
comment
URL в консоли? Можете ли вы привести пример желаемого результата?   -  person НЛО    schedule 19.12.2012


Ответы (5)


В консольном приложении нет объекта запроса. объект запроса в веб-приложении является экземпляром CHttpRequest, если вы генерируете URL-адреса в офлайн-задаче, вам нужно настроить baseUrl как-то иначе, возможно, в конфигурации:

"request" => array(
    'hostInfo' => 'http://localhost',
    'baseUrl' => '/yii-project/index-test.php',
),

// OR

'request' => array(
    'hostInfo' => 'http://localhost',
    'baseUrl' => '/yii-project',
    'scriptUrl' => 'index-test.php',
),
person Asgaroth    schedule 19.12.2012
comment
Спасибо, а где это разместить? - person Harish Anchu; 20.12.2012
comment
это должно войти в ваш файл конфигурации консоли, в раздел компонентов, который обычно защищен/config/console.php - person Asgaroth; 20.12.2012
comment
получить ошибку при попытке установить hostInfo Property "CConsoleApplication.request" is read only. - person user1954544; 04.09.2014
comment
@user1954544 user1954544 вы должны поместить внутренний массив компонентов в корневую конфигурацию; - person alexglue; 01.06.2015

Для расширенного шаблона Yii2 создайте файл params.php, если он не существует в каталоге config вашей консоли или общего приложения, и вставьте следующий код:

return [
   'frontendUrl' => 'http://yourdomain.com'
];

Чтобы к нему можно было получить доступ следующим образом в консоли:

echo Yii::$app->params['frontendUrl'];
person pravindot17    schedule 10.11.2016

Вы должны добавить в config/console.php в массив компонентов

'request' => array(
    'hostInfo' => 'http://localhost',
    'baseUrl' => '',
    'scriptUrl' => '',
),

а также добавьте urlManager, чтобы он удалил index.php?r=site/action из URL-адреса, и у вас будут красивые URL-адреса.

'urlManager' => array(
    'urlFormat' => 'path',
    'showScriptName' => false,
    'rules' => array(
        '<controller:\w+>' => '<controller>/index',
        '<controller:\w+>/<id:\d+>' => '<controller>/view',
        '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
        '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    ),
),
person ursuleacv    schedule 26.04.2017

Пожалуйста, попробуйте следующий способ, чтобы получить базовую страницу URL,

echo Yii::app()->getBaseUrl(true);
person Vinoth Babu    schedule 19.12.2012
comment
Как базовая ванна приложения в файловой системе связана с базовым URL-адресом? - person НЛО; 19.12.2012
comment
Он возвращает базовый путь, а не базовый URL. - person Harish Anchu; 19.12.2012
comment
Это работает в веб-приложении, но не в консольном приложении. - person alumi; 27.02.2014
comment
@VinothBabu Мне это нужно. Спасибо. - person unknownbits; 24.07.2014
comment
Пожалуйста, не ставьте -ve без надлежащего тестирования, это рабочий код - person Elby; 24.07.2014
comment
Великий Элби. Могу я получить ваш почтовый идентификатор, пожалуйста? я хотел бы иметь контакт. - person Vinoth Babu; 24.07.2014

получить домашний URL следующим образом:

http://www.demo.local

echo Yii::app()->homeUrl;
person Teen SIPHACHANH    schedule 26.09.2013