无法解析引用标记的服务



我尝试在Symfony 5.5中使用标记和资源文件夹配置我的服务,我还使用了一些不同的符号。要么我得到了一个空迭代器作为构造函数参数,要么出现异常"Cannot autowire service…argument"。。。方法"__construct(("的类型提示为"可迭代",则应显式配置其值

我在以前的版本中使用了这个简单的功能,并遵循了该说明:https://symfony.com/doc/current/service_container/tags.html#reference-标记的服务。

这是我服务的相关部分

services:
_defaults:
autowire: true
autoconfigure: true
AppServiceLinkTypeGuesser:
resource: '../src/Service/LinkTypeGuesser'
tags: ['link.type.guesser']
AppServiceLinkTypeGuesser:
arguments:
- !tagged_iterator link.type.guesser

我的"父"服务类构造函数如下所示:

class LinkTypeGuesser
{
private $guessers;
public function __construct(iterable $linkTypeGuessers)
{
$this->guessers = $linkTypeGuessers;
}
}

有什么提示我在配置中遗漏了什么吗?

我真的不知道你的文件系统存储库
首先,不支持参数resource
支持的参数是"共享"懒惰""公共"属性"配置器"呼叫"标签""autowire"绑定";

resource: '../src/Service/LinkTypeGuesser'

Symfony将根据您设置为密钥的完全限定命名空间来查找您的资源。这意味着实现或扩展此服务的所有内容都将被标记。

  1. 您希望添加一个自定义标记并将所有服务注入父服务中。您有语法错误,缺少参数_instanceof

继续并尝试此代码(请更改空格以匹配yaml格式(:

services:
_defaults:
autowire: true
autoconfigure: true
_instanceof:
AppServiceLinkTypeGuesser:
tags: ['link.type.guesser']
AppServiceLinkTypeGuesser:
arguments:
- !tagged_iterator link.type.guesser

最新更新