Symfony2: как установить URL-адрес хоста / базы в сценариях CLI

В настоящее время я пишу инструмент для рассылки новостей и поэтому должен генерировать абсолютные URL-адреса в скрипте CLI, который вызывается через cron.

К сожалению, команда CLI Symfony ничего не знает о моем хосте / base_url, поэтому маршрутизатор генерирует абсолютные URL-адреса с неправильным base_url. Он всегда использует http://localhost как базу.

Есть ли способ сказать маршрутизатору правильный base_url?

Мой код:

 $this->container->get('router')->generate($route, $parameters, true); 

Solutions Collecting From Web of "Symfony2: как установить URL-адрес хоста / базы в сценариях CLI"

Вы можете сделать это следующим образом:

 $host = $this->getContainer()->getParameter('host'); $this->getContainer()->get('router')->getContext()->setHost($host); 

Аналогичным образом вы можете установить baseurl и схему:

 $this->getContainer()->get('router')->getContext()->setScheme('https'); $this->getContainer()->get('router')->getContext()->setBaseUrl('/web'); 

Начиная с версии 2.1 вы можете настроить параметры маршрутизатора по умолчанию, что, вероятно, лучший подход. Сценарий CLI будет использовать эти параметры по умолчанию, однако веб-запрос будет переопределять их:

 # app/config/parameters.yml parameters: router.request_context.host: example.org router.request_context.scheme: https router.request_context.base_url: my/path 

Дополнительные сведения см. В разделе Создание URL-адресов и отправка писем из консоли.

$host = $this->container->getParameter('host'); $this->container->get('router')->getContext()->setHost($host);