Symfony2: как установить URL-адрес хоста/базы в сценариях CLI
В настоящее время я пишу инструмент для рассылки новостей и поэтому должен генерировать абсолютные URL-адреса в CLI script, который вызывается через cron.
К сожалению, команда CLI Symfony ничего не знает о моем хосте /base _url, поэтому маршрутизатор генерирует абсолютные URL-адреса с неправильным base_url. Он всегда использует http://localhost
как базу.
Есть ли способ сказать маршрутизатору правильный base_url?
Мой код:
$this->container->get('router')->generate($route, $parameters, true);
Ответы
Ответ 1
Вы можете сделать это следующим образом:
$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
Начиная с версии 2.1 вы можете настроить параметры маршрутизатора по умолчанию, что, вероятно, лучший подход. CLI script будет использовать эти параметры по умолчанию, однако веб-запрос будет переопределять их:
# app/config/parameters.yml
parameters:
router.request_context.host: example.org
router.request_context.scheme: https
router.request_context.base_url: my/path
Подробнее см. Как создавать URL-адреса и отправлять письма с консоли
Ответ 3
$host = $this->container->getParameter('host');
$this->container->get('router')->getContext()->setHost($host);