如何解决Sulu:自定义数据提供者,enableTypes() 参数
我正在关注有关创建自定义数据提供程序的官方 sulu 文档:
https://docs.sulu.io/en/2.2/cookbook/smart-content-data-provider.html#dataprovider
这里,在 ExampleDataProvider 类中,在 getConfiguration() 方法中,有一段代码:
->enableTypes([
['type' => 'example-type-1','title' => 'type-translation-key-1'],['type' => 'example-type-2','title' => 'type-translation-key-2'],])
对于我的存储库类,我使用了 DataProviderRepositoryTrait 特性,正如那里所建议的那样。
那些类型是什么?他们能不能排除在外。我认为它们与智能字段类型的过滤器有关,但我不明白这是如何工作的。
更新:
实际问题是什么 - 当我尝试在后端打开编辑页面时,出现我的智能类型时出现错误:
[语义错误] line 0,col 84 near 'type WHERE entity.id': Error: Class App\Entity\MatchEvent has no association named type>
错误,我会说即使我排除了启用的类型,一些 sql 查询仍在寻找一些类型参数,但我不知道在哪里以及如何解决这个问题。
我在这里发现了一些类似的问题:How do i solve Semantical error: "Class has no association named.."
因此,如果问题相同,则意味着应将字段“类型”添加到我的自定义实体类型中。但是这篇教程文章中没有提到?
我发现:
public function appendJoins(QueryBuilder $queryBuilder,$alias,$locale)
{
$queryBuilder->addSelect('type')->leftJoin($alias . '.type','type');
}
在实现 DataProviderRepositoryInterface 接口时,我必须在我的存储库类中添加该“类型”以进行查询。如果我注释掉那行,我就不会再出错,但我的字段永远不会完成加载(微调器无限运行)
解决方法
是的,您是对的,这是通过 types
过滤的。这些类型是例如template-keys
用于 pages
,title
用于管理 ui 中的翻译。
可以在带有 Sulu/Component/Content/SmartContent/QueryBuilder
的 CustomDataProvider 中使用所选类型以按特定类型过滤项目。
DataProviderRepositoryTrait
在 these 行上使用类型过滤。如果自定义实体的别名不正确,您还可以覆盖 appendTypeRelation
方法。
但如果你不需要按类型过滤,你可以忽略它。
,解决了问题。事情是(如果我想得很好)我必须将字段“type”添加到我的自定义实体(教程中没有提到)或者我必须注释掉 appendJoins()
方法中的那一行,以便该字段获胜'不会被添加到sql查询中并导致错误。
除此之外,我还有一些其他问题,这导致我的代码即使在注释该行时也无法工作,但这与此问题无关。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。