首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AliasManagerInterface -deprecated Drupal\Core\Path\AliasManagerInterface

AliasManagerInterface -deprecated Drupal\Core\Path\AliasManagerInterface
EN

Drupal用户
提问于 2022-11-26 04:44:39
回答 1查看 100关注 0票数 0

错误:

网站遇到了一个意外的错误。请稍后再试。TypeError:传递给Drupal{模块名}\主题{类名}::__construct()的参数必须实现接口Drupal\path_alias\AliasManagerInterface,Drupal\Core\Path\AliasManager的实例

在构造方法中出现错误时,请提出纠正错误的解决方案。

尝试将"AliasManagerInterface“修改为"use \Core\Path\AliasManagerInterface”,我们现在使用的是"use Drupal\path_alias\AliasManagerInterface“,但实际上在构造方法中会出现错误,如下所述。

代码:

代码语言:javascript
复制
 use Drupal\path_alias\AliasManagerInterface;



  /**
   * Protected pathAlias variable.
   *
   * @var Drupal\path_alias\AliasManagerInterface
   */
  protected $pathAlias;


  public function __construct(AliasManagerInterface $pathAlias) {
    
    $this->pathAlias = $pathAlias;

  }
EN

回答 1

Drupal用户

发布于 2022-11-26 07:12:46

您必须使用Drupal8.8或Drupal8.9。

Drupal8,直到8.7,声明了引用Drupal\Core\Path\AliasManagerpath.alias_manager服务。在Drupal 8.8中,该服务被取消,将在Drupal 9.x中删除。作为替代,引入了一个新的服务,path_alias.manager服务,它引用了Drupal\path_alias\AliasManager

原始问题中的依赖注入是期望一个实现接口Drupal\path_alias\AliasManagerInterface的对象,而path_alias.manager服务确实实现了这个接口。但是,错误说明依赖注入没有接收实现Drupal\path_alias\AliasManagerInterface的对象,而是错误地接收了Drupal\Core\Path\AliasManager类型的对象,从而给出了错误。

最初的问题没有显示依赖关系是如何生成的,但是在Drupal中,最常见的两个方法是在模块的*.services.yml文件中创建服务和声明依赖项,或者在类的create()方法中声明依赖项。无论使用哪种方法,都仍然使用旧的path.alias_manager服务,因此将Drupal\Core\Path\AliasManager传递给类而不是Drupal\path_alias\AliasManager。解决方案是将被注入的服务从path.alias_manager更改为path_alias.manager

进一步阅读:https://www.drupal.org/node/3092086

票数 4
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/313853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档