Получить базовый url в приложении Yii consol

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

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

Undefined index: SERVER_NAME (/var/www/yii/framework/web/CHttpRequest.php:279)

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',
),

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

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

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

echo Yii::$app->params['frontendUrl'];

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

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

а также добавить urlManager, чтобы удалить индекс.РНР?r=сайт / действие из 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>',
    ),
),

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

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

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

http://www.демонстрация.местные

echo Yii::app()->homeUrl;