更改由 symfony/twig url 助手生成的主机(和端口)
Change the host (and port) generated by the symfony/twig url helper
我的 Symfony 应用程序作为 docker 服务运行。所以它在内部监听 localhost:80。但是要从主机(在 osx 上,所以使用 docker-machine)到达它,我通过 http://192.168.99.100:8080
到达它
每当我让 twig 生成一个完整的 url(例如 {{ url('register') }}
)时,它会生成一个 url 以 localhost 作为主机。
如何将其更改为我需要的 ip:port 组合?
您可以通过在 kernel.request
的事件侦听器中覆盖路由器上下文参数(主机、端口)来实现它。
检查这个答案
您的 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');
}
在我的问题中,我没有指定 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
对于这个特定问题,哪个是更简单的答案。
我的 Symfony 应用程序作为 docker 服务运行。所以它在内部监听 localhost:80。但是要从主机(在 osx 上,所以使用 docker-machine)到达它,我通过 http://192.168.99.100:8080
到达它每当我让 twig 生成一个完整的 url(例如 {{ url('register') }}
)时,它会生成一个 url 以 localhost 作为主机。
如何将其更改为我需要的 ip:port 组合?
您可以通过在 kernel.request
的事件侦听器中覆盖路由器上下文参数(主机、端口)来实现它。
检查这个答案
您的 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');
}
在我的问题中,我没有指定 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
对于这个特定问题,哪个是更简单的答案。