在 SilverStripe 中获取 Page DataObject 的父页面
Getting the parent pages of Page DataObject in SilverStripe
我正在开发一个 SilverStripe 项目。现在我正在尝试通过控制器中的 ID 获取页面对象,就像这样。
$currentPage = Page::get()->byID($this->ID);
此外,我也想要 $currentPage 的所有 parents/parent。但是我无法在数据库 table 中找到与 parent_page_id 之类的页面相关的列。如何获取页面数据对象的所有父页面?
页面广义上就是 SiteTree object。 ParentID
列存在于 SiteTree
数据库 table 上。您可以像这样访问页面的 parent:
$parent = $currentPage->Parent();
您也可以使用 SiteTree::getParent()
获得相同的结果:
$parent = $currentPage->getParent();
如果您需要递归地获取所有 parent,您可以循环执行直到 ->Parent()
returns falsy。
此外,由于 SiteTree
使用 Hierarchy
作为 Parent/Children 逻辑,您还可以使用 getAncestors()
获取所有 parent 和 grandparent秒。参见 the API documentation。
我正在开发一个 SilverStripe 项目。现在我正在尝试通过控制器中的 ID 获取页面对象,就像这样。
$currentPage = Page::get()->byID($this->ID);
此外,我也想要 $currentPage 的所有 parents/parent。但是我无法在数据库 table 中找到与 parent_page_id 之类的页面相关的列。如何获取页面数据对象的所有父页面?
页面广义上就是 SiteTree object。 ParentID
列存在于 SiteTree
数据库 table 上。您可以像这样访问页面的 parent:
$parent = $currentPage->Parent();
您也可以使用 SiteTree::getParent()
获得相同的结果:
$parent = $currentPage->getParent();
如果您需要递归地获取所有 parent,您可以循环执行直到 ->Parent()
returns falsy。
此外,由于 SiteTree
使用 Hierarchy
作为 Parent/Children 逻辑,您还可以使用 getAncestors()
获取所有 parent 和 grandparent秒。参见 the API documentation。