SilverStripe 3.1中的筛选器SiteTree TreeDropdownField()

SilverStripe 3.1中的筛选器SiteTree TreeDropdownField(),silverstripe,Silverstripe,如何过滤SiteTree页面的结果,以便只获得类名为ProductPage的页面 下面是代码的相关部分- static $has_one = array('ProductLinkPagesID' => 'SiteTree'); 这里呢 $ProductLinkPages = new TreeDropdownField('ProductLinkPagesID', 'Related Products Link', 'SiteTree'); TreeDropdownField无法渲染已筛选的

如何过滤
SiteTree
页面的结果,以便只获得类名为
ProductPage
的页面

下面是代码的相关部分-

static $has_one = array('ProductLinkPagesID' => 'SiteTree');
这里呢

$ProductLinkPages = new TreeDropdownField('ProductLinkPagesID', 'Related Products Link', 'SiteTree');

TreeDropdownField无法渲染已筛选的树


如果您发现数字对于拖网浏览下拉列表来说是一个太大的问题,您需要使用vanillaDropdownField-或其他解决方案。尽管默认情况下CMS使用jquery.chozen来帮助实现这一点。

如果您确实希望保留树结构,但只允许用户选择“ProductPage”页面,您可以使用TreeDropdownField并禁用所有其他节点:


由于所需的结果来自SiteTree is pages,但只有一种类型的页面-ProductPage,因此在这里使用
DropdownField
以及
ProductPage::get()->map()
-


感谢用户4694959

非常感谢,DropdownField在这里与ProductPage::get()->map()一起使用要好得多
$tree->setDisableFunction(function($item) {
    return ( ! $item instanceof ProductPage);
});
$ProductLinkPages = DropdownField::create('ProductLinkPagesID', 'Related Products Link', ProductPage::get()->map());