- Published on
TYPO3 TCA Tree with non-database items
- Authors
- Name
- Susanne Moog
TYPO3’s selectTree
can be fed by a custom data provider so you can render hierarchical choices from a non‑DB source (e.g., config files, APIs).
TCA setup
'my_tree' => [
'label' => 'Choose items',
'config' => [
'type' => 'select',
'renderType' => 'selectTree',
'items' => [], // provided dynamically
'treeConfig' => [
'dataProvider' => \Vendor\MyExt\Tree\MyArrayTreeDataProvider::class,
'parentField' => 'parent',
'childrenField' => 'children',
],
],
],
Data provider
use TYPO3\CMS\Backend\Form\Tree\TreeDataProviderInterface;
use TYPO3\CMS\Backend\Form\Tree\TreeNode;
final class MyArrayTreeDataProvider implements TreeDataProviderInterface
{
public function getTree(array $config): TreeNode
{
$root = new TreeNode('root', 'Root');
$root->setChildNodes([
new TreeNode('foo', 'Foo'),
new TreeNode('bar', 'Bar'),
]);
return $root;
}
}
Tips
- Cache expensive sources; the provider may be called multiple times per request
- Keep node identifiers stable to preserve selections
- For large trees, lazy‑load children to reduce payload