Symfony Ak和xE9;né;o服务pim#U catalog.saver.product是私有的,可以';不要在我的包中使用';s控制器

Symfony Ak和xE9;né;o服务pim#U catalog.saver.product是私有的,可以';不要在我的包中使用';s控制器,symfony,symfony4,akeneo,Symfony,Symfony4,Akeneo,根据文档,我应该能够调用$saver=$this->get('pim_catalog.saver.product')在我的捆绑包的控制器中,如下所示: <?php namespace XXX\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Response; class ExportController extends C

根据文档,我应该能够调用
$saver=$this->get('pim_catalog.saver.product')在我的捆绑包的控制器中,如下所示:

<?php
namespace XXX\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;

class ExportController extends Controller
{
    public function exportProduct($id): Response
    {
        $saver = $this->get('pim_catalog.saver.product');
        $saver->save($id);

    
        return new Response(
            '<html><body>foo</body></html>'
        );
    }

}
然而,它仍然不起作用

根据symfony4的文档,我可能应该创建一个扩展类。它应该和Akénéo的名字相同,但我找不到后者


我该怎么办?

错误消息中有一些提示

“pim_catalog.saver.product”服务或别名已被删除或删除 在编译容器时内联。你要么成功 public,或停止直接使用容器并使用依赖项 改为注射

作为最佳实践,我不鼓励将其公开,因为您不是服务提供商,并且有更好更简单的方法来解决您的问题。因此,我的拙见是,剩下的第二个选择就是走这条路

我不知道Akeneo的具体情况,但我知道Symfony和依赖注入。因此,我建议在控制器方法中使用参数typehint

1。检查要用于服务的自动布线类/接口“pim_catalog.saver.product”

console debug:autowiring
列出所有已定义的自动布线,并查找提及“pim_catalog.saver.product”的自动布线

console debug:autowiring
或者只需检查名称中带有akeneo的所有自动连接类/接口(很可能)

2。更新控制器代码以添加类型提示参数

下面几行


谢谢!但是,第一步没有显示任何结果,这让我觉得没有任何可使用的自动布线类/接口。那么您确定
SaverInterface
将在控制器中工作吗?我尝试了它,得到了异常“控制器要求您为“$saver”参数提供一个值。”因此消息“控制器要求您为“$saver”参数提供一个值。”只是表示您没有为控制器参数激活自动连线。为此,您需要使用标记“controller.service\u arguments”标记控制器。您甚至可以使用(yaml)config:Namespace\of\You\Controller\:resource:'sub/path/to/Controller/dir'public:true标记['Controller.service\u arguments']全局激活文件夹中所有控制器的标记
controller.service\u参数
不是Symfony 4 nope?^^^再次感谢:)编辑:现在我有了这个错误,让我认为这个接口实际上不存在:“它引用了接口“Akeneo\Tool\Component\StorageUtils\Saver\SaverInterface”,但不存在这样的服务。您可能应该将此接口别名为这些现有服务之一:因此我认为没有任何“pim_catalog.saver.produc”自动连接接口/类:-(
console debug:autowiring akeneo