我正在开发SilverStripe项目。现在,我试图像这样通过控制器中的ID获取Page对象。
$currentPage = Page::get()->byID($this->ID);
此外,我也希望$ currentPage的所有父母/父母。但是我无法在数据库表中找到诸如parent_page_id之类的Page的相关列。如何获取Page数据对象的所有父页面?
答案 0 :(得分:3)
页面从广义上讲是一个SiteTree对象。 ParentID
数据库表上存在SiteTree
列。您可以像这样访问页面的父级:
$parent = $currentPage->Parent();
您也可以使用SiteTree::getParent()
获得相同的结果:
$parent = $currentPage->getParent();
如果您需要递归让所有父母,则可以循环执行,直到->Parent()
返回虚假为止。
此外,由于SiteTree
使用Hierarchy
作为“父母/子女”逻辑,因此您也可以使用getAncestors()
获取所有父母和祖父母。参见the API documentation。