代码之家  ›  专栏  ›  技术社区  ›  Dennis Haarbrink

更改symfony/twig url助手生成的主机(和端口)

  •  0
  • Dennis Haarbrink  · 技术社区  · 5 年前

    我的symfony应用程序作为Docker服务运行。所以在内部它监听localhost:80。但是要从主机(在OSX上,所以使用Docker机器)到达它,我通过 http://192.168.99.100:8080

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

    如何将其更改为我需要的IP:端口组合?

    2 回复  |  直到 5 年前
        1
  •  1
  •   brevis    5 年前

    您可以通过重写事件侦听器中的路由器上下文参数(主机、端口)来实现它。 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');
    }
    
        2
  •  0
  •   Dennis Haarbrink    5 年前

    在我的问题中,我没有指定从命令生成的URL,因为我认为它不相关。

    根据@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
    

    对于这个特定的问题,哪一个更简单。