Sulu:自定义数据提供者,enableTypes()参数

Sulu: custom data provider, enableTypes() parameters

我正在关注有关创建自定义数据提供程序的官方 sulu 文档:

https://docs.sulu.io/en/2.2/cookbook/smart-content-data-provider.html#dataprovider

这里,在 ExampleDataProvider class 中,在 getConfiguration() 方法中有一段代码:

        ->enableTypes([
            ['type' => 'example-type-1', 'title' => 'type-translation-key-1'],
            ['type' => 'example-type-2', 'title' => 'type-translation-key-2'],
        ])

我的存储库 class 我正在使用 DataProviderRepositoryTrait 特性,正如那里所建议的那样。

这些类型是什么?能排除吗。我假设它们与智能字段类型的过滤器有关,但我不明白这是如何工作的。

更新:

实际问题是什么 - 当我尝试在后端打开编辑页面时,出现了我的智能类型,但出现错误:

[语义错误] 第 0 行,'type WHERE entity.id' 附近的第 84 列:错误:Class App\Entity\MatchEvent 没有名为 type[= 的关联45=]

我尝试只排除添加启用类型的代码,但它是一样的。

由于错误,我会说一些 sql 查询仍在寻找某些类型参数,即使我排除了启用的类型,但我不知道在哪里以及如何解决这个问题。

我在这里发现了一些类似的问题:How do i solve Semantical error: "Class has no association named.."

因此,如果问题相同,则意味着应将字段“type”添加到我的自定义实体类型中。但是这篇教程文章里没有提到?

我发现:

    public function appendJoins(QueryBuilder $queryBuilder, $alias, $locale)
    {
      $queryBuilder->addSelect('type')->leftJoin($alias . '.type', 'type');
    }

在实现 DataProviderRepositoryInterface 接口时我必须在我的存储库 class 中添加这个 'type' 来查询。如果我注释掉该行,我不会再收到错误,但我的字段永远不会完成加载(微调器是 运行 无限)

是的,你没看错,这是为了 types 的过滤。这些类型是例如template-keys 用于 pagestitle 用于管理中的翻译 ui。

所选类型可以在您的 CustomDataProvider 中使用 Sulu/Component/Content/SmartContent/QueryBuilder 按特定类型过滤项目。

DataProviderRepositoryTraitthese 行上使用类型过滤。如果您的自定义实体的别名不正确,您也可以覆盖 appendTypeRelation 方法。

但如果你不需要按类型过滤,你可以忽略它。

问题解决了。事情是(如果我弄清楚的话)我必须将字段“类型”添加到我的自定义实体(教程中未提及)或者我必须注释掉 appendJoins() 方法中的一行以便该字段获胜' 未添加到 sql 查询并导致错误。

除此之外,我还有一些其他问题,这导致我的代码即使在该行被注释时也无法运行,但这与此问题无关。