在 Symfony 6 中创建通用通用控制器和存储库

问题描述 投票:0回答:1

我们正在从 Symfony 2.8 迁移到 Symfony 6.4,并且正在重写升级到新版本所需的必要代码。在我们的旧版本中,我们有通用的存储库和控制器来执行通用任务,这些任务分别从几乎每个存储库和控制器中调用。在公共控制器中,我们正在扩展控制器“class CommonController extends Controller”,在公共存储库中,我们正在扩展实体存储库“class CommonRepository extends EntityRepository”。在所有其他存储库/控制器中,我们只是扩展公共存储库/控制器。我们在旧版本的 services.yml 下声明如下。

services:
    bundle.repository.common:
        class: Bundle\Repository\CommonRepository
        abstract: true
        calls:
            - [ setContainer, [ @service_container ] ]
        

但是当我们尝试在新的 symfony 6.4 中做同样的事情时,我们遇到了问题。扩展实现保持不变,下面是从新 symfony 中的 services.yml 添加的代码:

Bundle\Repository\CommonRepository:
    abstract:  true
    arguments: ['@doctrine.orm.entity_manager']
    calls:
        - setLogger: ['@logger']
        

在此之后我们收到错误 InvalidArgumentException > LoaderLoadException

从资源“../src/Bundle/Repository”导入服务时,期望在文件“src\Bundle\Repository\ClrRepository.php”中找到类“Bundle\Repository\ClrRepository”,但没有找到!检查 /config/services.yaml 中资源使用的命名空间前缀(从“src\Kernel.php”导入)。

现在我陷入了这一点,我所做的任何更改都会导致错误。

我尝试按照 Symfony 6 更改设置,但没有得到所需的结果。

symfony repository symfony6 symfony-config-component
1个回答
0
投票

经过大量搜索和检查,我们终于能够创建通用控制器和存储库。我们不需要加载via服务,遵循通用结构并且能够实现它。

© www.soinside.com 2019 - 2024. All rights reserved.