我有ModularPage
类延伸Page
。页面有一个'缩略图'Image
。图像无法通过ORM加载到SS4中
我有一个路线为ajaxing ModularPage
集合。我用以下方法获取集合:
$rootPage = DataObject::get_by_id('SilverStripe\\CMS\\Model\\SiteTree', $id);
$pages = $rootPage->Children();
foreach ($pages as $page) {
var_dump($page->Thumbnail()->Link()); // Null
var_dump($page->ThumbnailID); // '4'
}
ThumbnailID已填充,但缩略图对象为空。这是一个错误?我需要在SS4中做任何不同的事情吗?
更新:所以,当我直接从浏览器访问路由的链接填充正确。通过Ajax访问时,Link
为空。
更新2:图像链接()也可以按照正常方式从同一类访问,只有在通过ajax调用时才会被剥离。
只是出于好奇,如果你得到是作为真正的页面类的神奇方法thumbnail()然后返回corret实体。例如,get_by_id(“Page”或应该如何使用oit来与命名空间一起使用。没有4.0版本的内部版本来测试它。 –
过滤Id也使用正确的类名直接获取对象,如果您访问数据字段不是主要查询的一部分,它会为每次迭代的数据库请求。Page :: get() - > filter(“parentId”,无论);应该比SiteTree :: get更优化,因为后者会导致迭代加载每个项目的新数据。也就是说,如果我知道它是如何在至少3.2版本上完成的话)。 –
@FinBoWa我试着调用真正的'Page类,当从端点收到时仍然为空。在'SiteTree'上使用'Page'的效率很好,我将来会这样做。 – nickspiel