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, чтобы он удалил индекс.php?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);
Comments