symfony “服务xxx依赖于不存在的服务”,这似乎不是真的?

6ojccjat  于 2022-11-30  发布在  其他
关注(0)|答案(2)|浏览(163)

我有一些应用程序要迁移到Symfony 4.1。启用container.autowiring.strict_mode: true后,重新保护我们的自定义Router时出现错误

The service ".service_locator.G69Xsbl.Foo\Bundle\Admin\SiteRoutingBundle\Routing\AdminSiteRouter" 
has a dependency on a non-existent service "Symfony\Component\Config\Loader\LoaderInterface".

该类如下所示:

<?php

namespace Foo\Bundle\Admin\SiteRoutingBundle\Routing;

use Symfony\Bundle\FrameworkBundle\Routing\Router;
use Foo\Bundle\Common\CoreBundle\Manager\SiteManagerInterface;

class AdminSiteRouter extends Router
{
    const USE_SITE_HOST  = true;
    const USE_SITE_PARAM = false;

    protected $siteManager;

    public function setSiteManager(SiteManagerInterface $siteManager)
    {
        $this->siteManager = $siteManager;
    }

    public function generate($name, $parameters = [], $referenceType = self::ABSOLUTE_URL)
    {
        // some code
    }
}

无论是在此类中,还是在FrameworkBundle中的扩展类Router中,都不依赖于LoaderInterface
此类的自动安装配置:

Foo\Bundle\Admin\SiteRoutingBundle\Routing\AdminSiteRouter:
    arguments:
        $resource: '%site_routing_file_path%'
        $options: []
    calls:
        - [setSiteManager, ['@Foo\Bundle\Common\CoreBundle\Manager\SiteManagerInterface']]
qni6mghb

qni6mghb1#

看起来有两个容器参数导致了这个问题。使用一个全新的4.1.1安装我得到了同样的错误。修复它:

# services.yaml
App\Service\AdminRouter:
    arguments:
        $container: '@service_container'
        $parameters: '@service_container'
        $resource: 'resource'
        $options: []

我的管理路由器很简单:

namespace App\Service;
use Symfony\Bundle\FrameworkBundle\Routing\Router;
class AdminRouter extends Router
{
}

作为参考,框架路由器如下所示:

public function __construct(
    ContainerInterface $container, 
    $resource, 
    array $options = array(), 
    RequestContext $context = null, 
    ContainerInterface $parameters = null, 
    LoggerInterface $logger = null)
{

请注意两个ContainerInterface参数。我认为这是混淆autowire。甚至可能是一个bug。

pdtvr36n

pdtvr36n2#

我正在使用Drupal 9,我也面临这个问题后,unstall重新安装commerce_shipping模块,请你怎么解决它?
Symfony\组件\依赖注入\异常\未找到服务异常:服务“commerce_currency_resolver_shipping.order_processor”依赖于不存在的服务“commerce_shipping.order_manager”

相关问题