Получение родительских страниц Page DataObject в SilverStripe - PullRequest
1 голос
/ 26 мая 2019

Я занимаюсь разработкой проекта SilverStripe.Теперь я пытаюсь получить объект Page по идентификатору в контроллере следующим образом.

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

Кроме того, я хочу, чтобы все родители / родители $ currentPage тоже.Но я не могу найти связанные столбцы в таблице базы данных для страницы, как parent_page_id или что-то еще.Как я могу получить все родительские страницы объекта данных Page?

1 Ответ

3 голосов
/ 27 мая 2019

Страница в широком смысле является объектом SiteTree.Столбец ParentID существует в таблице базы данных SiteTree.Вы можете получить доступ к родителю страницы следующим образом:

$parent = $currentPage->Parent();

Вы также можете использовать SiteTree::getParent() для того же результата:

$parent = $currentPage->getParent();

Если вам нужно рекурсивно получить всех родителей, вы можетеделайте это в цикле, пока ->Parent() не вернет ложь.

Кроме того, поскольку SiteTree использует Hierarchy для логики Parent / Children, вы также можете использовать getAncestors(), чтобы получить всех родителей, бабушек и дедушек.См. документацию API .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...