ModelAdmin vs GridField:什么时候使用一个而不是另一个?

ModelAdmin vs GridField: When to use one over the other?

我发现 ModelAdmin 比 SilverStripe 中的 GridField 更强大。我的问题是你什么时候使用 GridField 而不是 ModelAdmin?

ModelAdmin,taken from the SilverStripe documentation

ModelAdmin provides a simple way to utilize the SilverStripe Admin UI with your own data models. It can create searchables list and edit views of DataObject subclasses, and even provides import and export of your data.

它还继续说明 ModelAdmin 由 GridField 提供支持。您可能已经知道,GridField 可以在 ModelAdmin 之外直接用于页面或其他数据对象等对象。

将 ModelAdmin 视为 DataObjects 的容器,利用 GridField 查看和导航它们。 ModelAdmin 中的项目不必与页面相关。

因此,managing permissions 查看特定数据对象之类的事情变得更加容易,因为您可以更轻松地控制登录到 CMS 的人是否可以查看 ModelAdmin 页面,而不是试图隐藏特定页面上的特定 GridField .

现在对于 ModelAdmin 之外的 GridField 使用,通常您会在 SiteTree 的页面上看到它用于链接一组数据对象(通常通过 has_many 虽然也可以是 many_many)到页面本身。

直接在页面上使用 GridField 的一个很好的例子是,如果您想在特定页面上使用图片库。您不需要它的 ModelAdmin,因为您希望它链接到页面本身。

您可能希望更多地使用 ModelAdmin 的示例是电子商务网站。您将存储订单并使用 ModelAdmin 显示它们,而不是导航到 SiteTree 中的特定 "Shop" 页面以查看数据。

没有什么能阻止您使用一种或另一种方法来显示数据,每种方法都有自己的优点和开箱即用的功能,无需太多额外配置。