来自Symfony2中命令组件的getHost()或$_SERVER[';SERVER_NAME';]


getHost() or $_SERVER['SERVER_NAME'] from command component in Symfony2

我正在Symfony2中执行任务(命令组件),我想使用

$this->getRequest()->getHost()

就像我在控制器里一样。获取该值的方法是什么(/Command/MyCommand.php)?

我知道我能做$_SERVER['SERVER_NAME']。但是,我想使用Symfony。

如果您需要主机,您可以从路由器上下文中获取:

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

但由于您正在寻找SERVER_NAME,因此在从控制台执行脚本期间,它将不可用。

解决这种情况的方法可以是在参数中定义参数,并将其设置为Command:

$serverName = $this->getContainer()->getParameter('your_defined_param');

我知道这是一个很老的问题,但它在谷歌搜索结果中排名靠前。

自Symfony 2.1以来,您可以向参数添加其他字段。yml

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

这适用于Symfony 4.1 之前的所有版本

值得一提的是,您还必须使用url(绝对),而不是路径

链接到手册Symfony.com-如何从控制台生成URL