Symfony2: cómo configurar la URL de host / base en scripts CLI

Actualmente estoy escribiendo una herramienta de boletín informativo y, por lo tanto, tengo que generar URL absolutas en un script CLI que se llama a través de cron.

Lamentablemente, el comando CLI de Symfony no sabe nada sobre mi host / base_url, por lo que el enrutador genera URL absolutas con una base_url incorrecta. Siempre usa http://localhost como base.

¿Hay alguna manera de decirle al enrutador la base_url correcta?

Mi código:

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

Puedes hacerlo de esta manera:

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

Del mismo modo, puede establecer baseurl y esquema:

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

Desde 2.1 puede configurar los parámetros predeterminados del enrutador, que probablemente sea el mejor enfoque. Una secuencia de comandos CLI utilizará estos parámetros predeterminados; sin embargo, una solicitud web los anulará:

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

Para obtener más información, consulte Cómo generar URL y enviar correos electrónicos desde la consola

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