【问题标题】:Drupal 8: You have requested a non-existent service "router.route_provider.old"Drupal 8:您请求了一个不存在的服务“router.route_provider.old”
【发布时间】:2016-12-29 00:20:42
【问题描述】:

我正在参考这些页面创建两种自定义内容类型:

https://www.drupal.org/node/2629550

https://www.drupal.org/node/2693979

未捕获的 PHP 异常 Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException: “您请求的服务不存在 “router.route_provider.old”。你的意思是其中之一: “router.route_provider”,“router.route_preloader”?”在 ...\core\lib\Drupal\Component\DependencyInjection\Container.php 第 157 行

谁能帮助我,为什么会发生这种情况以及如何解决它?

我使用的是 Drupal 8.1.8 版本。

【问题讨论】:

  • 您能否编辑您的问题以包含 DiscoveryTrait.php 的第 52 行附近的代码?
  • 这里是 52 左右的代码: protected function doGetDefinition(array $definitions, $plugin_id, $exception_on_invalid) { // 避免使用会创建数组副本的三元组。 if (isset($definitions[$plugin_id])) { return $definitions[$plugin_id]; } elseif (!$exception_on_invalid) { 返回 NULL; } throw new PluginNotFoundException($plugin_id, sprintf('“%s”插件不存在。', $plugin_id)); }
  • 这很难阅读,人们可能在 cmets 中看不到这一点。请编辑您的问题以包含该问题。我对 Drupal 一无所知,只是想帮助您回答您的问题。
  • api.drupal.org/api/drupal/… 查看函数名称:doGetDefinition() 抛出错误的地方

标签: php drupal drupal-8


【解决方案1】:

我检查了 core.services.yml 文件,没有声明为“router.route_provider.old”的路由

我通过在 core.services.yml 文件中复制“router.route_provider”创建了一个路由器名称为“router.route_provider.old”,这解决了我的问题。

我认为 Drupal 使用“router.route_provider.old”路由器作为临时复制“router.route_provider”路由器信息。但由于该路由器名称不存在,因此抛出异常。

我不知道这是一个错误还是有更好的方法来修复它。

更新: 这里提供了一个补丁:https://www.drupal.org/node/2788087

【讨论】:

    猜你喜欢
    • 2013-02-03
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    相关资源
    最近更新 更多