【发布时间】:2017-08-21 09:03:17
【问题描述】:
我有一个数据对象Product,其中$has_manyProductPages。 MyObject()->getComponents('SomePages') 返回与我的 Product 对象关联的所有活动页面。
我需要知道附加到此对象的所有页面(草稿和已发布),因为我想通过 GridField 内联编辑处理取消/发布它们(以及更改其他页面属性,如 URL 和标题)。
我通过以下方式获得了ProductPages 的所有草稿:
$gridfieldList = Versioned::get_by_stage('ProductPage', 'Stage')
->filter(array(
"ProductID" => $this->ID
));
这会返回一个产品页面的 DataList,但不知道我的关联产品上下文,这意味着当我尝试单击保存时,什么也没有发生。
如果我使用$this->getComponents('ProductPages') 填充 GridField,所有更改都会在表单提交时正确保存,但如果我尝试取消发布页面,它会从我的 GridField 中“删除”。
所以我的问题基本上是,我可以在这里采用哪种方法让对象的关联页面填充我的 GridField,同时仍然了解它们的上下文(即,成功保存更改)?
值得注意的是,我在此站点上运行的是 SS 3.1.5 =/
【问题讨论】:
标签: php silverstripe