首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何应用路径别名修补程序?

如何应用路径别名修补程序?
EN

Drupal用户
提问于 2021-01-28 08:20:50
回答 1查看 508关注 0票数 0

我正在更新一个从Drupal8.7到Drupal8.8的站点,在运行drush updb之后,我遇到了以下错误:

代码语言:javascript
复制
[error]  TypeError: Argument 2 passed to Drupal\pathauto\AliasStorageHelper::__construct() must be an instance of Drupal\path_alias\AliasRepositoryInterface, instance of Drupal\Core\Path\AliasRepository given, called in drupal/core/lib/Drupal/Component/DependencyInjection/Container.php on line 289 in Drupal\pathauto\AliasStorageHelper->__construct() (line 79 of drupal/modules/contrib/pathauto/src/AliasStorageHelper.php) #0 drupal/core/lib/Drupal/Component/DependencyInjection/Container.php(289): Drupal\pathauto\AliasStorageHelper->__construct(Object(Drupal\Core\Config\ConfigFactory), Object(Drupal\Core\Path\AliasRepository), Object(Drupal\Core\Database\Driver\mysql\Connection), Object(Drupal\pathauto\VerboseMessenger), Object(Drupal\Core\StringTranslation\TranslationManager), Object(Drupal\Core\Entity\EntityTypeManager))

我在这里的链接中发现了一个类似的问题,似乎有一个解决方案(补丁)。

编辑:

我运行了一个composer命令,试图修复路径别名错误:

作曲家要求'drupal/pathauto:1.x-dev@dev‘

Ran composer更新和drush updb。以下是控制台显示的错误:

代码语言:javascript
复制
>  [error]  Argument 2 passed to Drupal\pathauto\AliasStorageHelper::__construct() must be an instance of Drupal\path_alias\AliasRepositoryInterface, instance of Drupal\Core\Path\AliasRepository given
>  [error]  Update failed: block_field_update_8001
> PHP Fatal error:  Uncaught ReflectionException: Class Drupal\path_alias\AliasRepository does not exist in /var/www/html/docroot/vendor/symfony/dependency-injection/ContainerBuilder.php:1174
> Stack trace:
> #0 /var/www/html/docroot/vendor/symfony/dependency-injection/ContainerBuilder.php(1174): ReflectionClass->__construct('Drupal\\path_ali...')
> #1 /var/www/html/docroot/vendor/symfony/dependency-injection/ContainerBuilder.php(634): Symfony\Component\DependencyInjection\ContainerBuilder->createService(Object(Symfony\Component\DependencyInjection\Definition), Array, true, 'path_alias.repo...')
> #2 /var/www/html/docroot/vendor/symfony/dependency-injection/ContainerBuilder.php(1281): Symfony\Component\DependencyInjection\ContainerBuilder->doGet('path_alias.repo...', 1, Array, true)
> #3 /var/www/html/docroot/vendor/symfony/dependency-injection/ContainerBuilder.php(1238): Symfony\Component\DependencyInjection\ContainerBuilder->doResolveServices(Object(Symfony\Component\DependencyInjection\Reference), Array, true)
> #4 /var/www/html/docroot/ in /var/www/html/docroot/vendor/symfony/dependency-injection/ContainerBuilder.php on line 1174
 [error]  Update aborted by: system_update_8803, block_field_update_8001
 [error]  Finished performing updates.

我还能用路径自动模块做些什么吗?

EN

回答 1

Drupal用户

发布于 2021-01-28 08:30:09

您的意思是在drupal模块上“应用补丁”吗?您应该使用作曲家补丁,github页面cleary解释设置它,并使用补丁模块\core。

在你的情况下,应该是这样的:

代码语言:javascript
复制
{
  "require": {
    "cweagans/composer-patches": "~1.0",
    "drupal/core-recommended": "^8.8",
  },
  "config": {
    "preferred-install": "source"
  },
  "extra": {
    "patches": {
      "drupal/pathauto": {
        "issue name": "https://www.drupal.org/files/issues/2020-04-27/3131286-3.patch"
      }
    }
  }
}

但是,这个问题已经“解决了”,所以它已经在模块的dev版本中了。在稳定的模块上应用可能会失败,所以您只需切换到模块的dev版本,也就是

代码语言:javascript
复制
composer require 'drupal/pathauto:1.x-dev@dev'

请注意,这是最好避免在生产开发版本,除非严格必要。换句话说,如果您切换到dev,您应该尽快更新到路径自动程序的下一个版本。

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

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

复制
相关文章

相似问题

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