I have build a ProductPage which can have many ReferencePages (many_many and belongs_many_many). So far it works.
Now I want to be able to only select ReferencePages that are within the same "section" of the website. (ProductPage and ReferencePages have the same Root)
I tried using TreeMultiselectField with a DropDownMap as DataSource:
// get the IDs of all Pages with this root:
$root = $this->Level(1);
$ids = $root->getDescendantIDList();
// get all ReferencePages that are in that idlist and convert to dropdown map:
$query = '("SiteTree"."ID" = ' . implode(' OR "SiteTree"."ID" = ', $ids) .')';
$items = DataObject::get("ReferencePage", $query)->map('ID', 'Title', '--empty--');
// create field:
$treeField = new TreeMultiselectField("References", "References", $items);
Works: The TreeMultiselectField only shows References that i want it to show. You can select References and it actually saves the selection to the DB.
Problem: The selected References are not selected /checked in the TreeMultiselectField when the control loads.
Can I select them manually somehow? By setting $treeField->value or something?
Or is there an other way to do all this?