我是 Symfony 的新手,正在使用 5.x。我已经使用 Symfony\Component\Console\Command\Command 创建了一个控制台命令,并且正在尝试使用 Symfony\Component\HttpClient\HttpClient 来 POST 到一个 URL。我需要生成在同一台机器上运行的路由的 URL(但将来这可能会更改为不同的机器),因此主机可能类似于 localhost 或 example.com,并且 API 的端口是自定义的。我在网上搜索过,但我得到的唯一可能的解决方案是使用 Symfony\Component\Routing\Generator\UrlGeneratorInterface,并且网上充斥着旧版本 Symfony 的代码示例,我还没有设法得到这个工作。
我最近的尝试是:
public function __construct(UrlGeneratorInterface $router)
{
parent::__construct();
$this->router = $router;
}
但我真的不明白如何将参数 UrlGeneratorInterface $router 注入构造函数。我收到未提供参数的错误。我是否必须在其他地方创建 UrlGenerator 的实例并将其注入此处,或者是否有更简单的方法从命令中生成 Symfony 中的绝对 URL?我还不太了解容器。
$url = $context->generate('view', ['Param' => $message['Param']], UrlGeneratorInterface::ABSOLUTE_URL);
服务.yaml:
App\Command\MyCommand:
arguments: ['@router.default']
是否有更简单的方法通过显式指定主机、协议、端口、路由、参数等从控制台命令生成 URL?
为什么 UrlGeneratorInterface 或 RouterInterface 不自动装配?
如果我还启用了自动装配,是否需要在 services.yaml 中手动指定接线为 $router.default ?
我知道执行函数的实现可能不正确,但如果不先让构造函数工作,我就无法修复它。这仍在进行中。
慕田峪4524236
慕斯709654
忽然笑