2016-06-27 2 views
0

Я попытался найти способ получить базовый URL-адрес смешанного (http + CLI) приложения. CLI используется для выполнения регулярных уведомлений, где используется URL-адрес приложения.Zend framework 2 получить baseUrl с контроллера консоли

Я попытался это, но он возвращает меня только "http://"

print_r($this->getEvent()->getApplication()->getServiceManager()->get('ViewHelperManager')->get('ServerUrl')->__invoke()); 

ответ

1

Это не работает для запросов консоли. serverUrl извлекается из объекта запроса http (Zend\Http\Request), так как запрос консоли завернут в объект запроса консоли (Zend\Console\Request), эта информация не будет доступна для таких запросов.

Вы можете определить (hardcode) URL в глобальной конфигурации или константе и использовать это вместо этого.

Например добавить host.config.local файл в папку application/config/autoload:

<?php 

return array(
    'hostname' => 'http://www.example.com' 
); 

Теперь вы можете получить имя хоста из вашего менеджера службы:

$config = $serviceManager->get('config'); 
$hostName = $config['hostname']; 
+0

Нет, я запускаю этот код в контроллере консоли. Он возвращает мне «http //» – bksi

+0

@bksi. Запрос консоли не является HTTP-запросом. Поэтому, когда вы выполняете консольный запрос, нет такой вещи, как 'serverUrl'. – Wilt

+0

Действительно. Итак, вернемся к моему вопросу: как я могу получить URL-адрес приложения с контроллера консоли? – bksi

Смежные вопросы