Published on

TYPO3 TCA Tree with non-database items

Authors

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