更改由symfony / twig URL帮助程序生成的主机(和端口)

时间:2019-01-24 19:41:14

标签: php url-routing symfony4

我的Symfony应用程序作为docker服务运行。因此在内部它会监听localhost:80。但是要从主机(在osx上,因此使用docker-machine)到达它,我可以通过http://192.168.99.100:8080

到达它

每当我让twig生成完整的URL(例如{{ url('register') }})时,它都会生成一个以localhost为主机的URL。

如何将其更改为所需的ip:port组合?

2 个答案:

答案 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

哪个是解决此特定问题的简单答案。