在SilverStripe中获取Page DataObject的父页面

时间:2019-05-26 14:53:29

标签: php silverstripe silverstripe-4

我正在开发SilverStripe项目。现在,我试图像这样通过控制器中的ID获取Page对象。

$currentPage = Page::get()->byID($this->ID);

此外,我也希望$ currentPage的所有父母/父母。但是我无法在数据库表中找到诸如parent_page_id之类的Page的相关列。如何获取Page数据对象的所有父页面?

1 个答案:

答案 0 :(得分:3)

页面从广义上讲是一个SiteTree对象。 ParentID数据库表上存在SiteTree列。您可以像这样访问页面的父级:

$parent = $currentPage->Parent();

您也可以使用SiteTree::getParent()获得相同的结果:

$parent = $currentPage->getParent();

如果您需要递归让所有父母,则可以循环执行,直到->Parent()返回虚假为止。

此外,由于SiteTree使用Hierarchy作为“父母/子女”逻辑,因此您也可以使用getAncestors()获取所有父母和祖父母。参见the API documentation