Symfony2: как установить URL хоста / базы в скриптах CLI - PullRequest
18 голосов
/ 29 февраля 2012

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

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

Можно ли указать маршрутизатору правильный base_url?

Мой код:

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

Ответы [ 3 ]

27 голосов
/ 29 февраля 2012

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

$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');
14 голосов
/ 06 октября 2014

Начиная с версии 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-адреса и отправлять электронные письма из консоли.

1 голос
/ 18 марта 2014

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

...