我的Symfony应用程序作为docker服务运行。因此在内部它会监听localhost:80。但是要从主机(在osx上,因此使用docker-machine)到达它,我可以通过http://192.168.99.100:8080
到达它每当我让twig生成完整的URL(例如{{ url('register') }}
)时,它都会生成一个以localhost为主机的URL。
如何将其更改为所需的ip:port组合?
答案 0 :(得分:1)
您可以通过在kernel.request
的事件侦听器中覆盖路由器上下文参数(主机,端口)来实现。
检查此答案https://stackoverflow.com/a/31859779/1007620
您的onRequest()
方法应如下所示:
public function onRequest(GetResponseEvent $event)
{
if (!$event->isMasterRequest()) {
return;
}
$this->router->getContext()->setHost('192.168.99.100');
$this->router->getContext()->setHttpPort('8080');
$this->router->getContext()->setHttpsPort('8080');
}
答案 1 :(得分:0)
在我的问题中,我没有指定url是从Command生成的,因为我认为它不相关。
基于@brevis的回答,我现在知道要搜索的内容(路由器上下文),这使我进入了以下页面:https://symfony.com/doc/current/console/request_context.html
在该页面上,您应该添加以下内容:
# config/services.yaml
parameters:
router.request_context.host: 'example.org'
router.request_context.scheme: 'https'
router.request_context.base_url: 'my/path'
asset.request_context.base_path: '%router.request_context.base_url%'
asset.request_context.secure: true
哪个是解决此特定问题的简单答案。