【发布时间】:2013-10-01 02:05:36
【问题描述】:
如果我想在 cms 中使用 GridField 管理 $has_many 关系,我将如何限制一个对象可以拥有的关系数量?这可能吗?
我可以在模型中执行此操作,还是必须将其添加到我用来添加和删除关系的GridField 中?
我正在考虑实现GridField_SaveHandler 来制作自定义GridFieldComponent,但不确定如果我检测到有问题如何使用它来中止保存。
【问题讨论】:
-
您能不能只使用
$this->MyRelationName()->Count()来检查已经存在的数量,如果达到限制,只需从GridFieldConfig中的GridFieldConfig中删除GridFieldAddNewButton吗@?您还可以在onBeforeWrite()钩子中添加额外的检查...... -
是的,我刚刚尝试过,唯一的问题是,如果我添加第九个对象,页面不会重新加载操作,按钮仍然出现但无法正常工作,然后当我刷新页面并删除第 9 项按钮仍然隐藏,直到页面刷新
-
您好,您有解决方法吗?我和你一样被困在这里。删除关系不会强制浏览器重新加载,因此在您刷新页面之前不会出现隐藏的“添加新”按钮。
-
最后,我使用
count()的关系来触发添加GridFieldAddExistingAutocompleter组件,只有在没有达到限制的情况下,如上所述,副作用也如上所述。我在想你可能会添加一些js来显示/隐藏通过这个检查隐藏的元素,我从来没有把它做到这一点,因为对我来说这是一个相当小的限制。如果您想出更好的解决方案,请在此处发布,因为我想看到它:) -
哦,我没有注意到你已经修复了它,现在才看到那个评论,我的回答基本上就是你已经用代码示例所做的。
标签: silverstripe