NodeFactory

Create an element object depending on renderType.

This is the main factory to instantiate any node within the render chain of FormEngine. All nodes must implement NodeInterface.

Nodes are "container" classes of the render chain, "element" classes that render single elements, as well as "fieldWizard", "fieldInformation" and "fieldControl" classes which are called by single elements to enrich them.

This factory gets a string "renderType" and then looks up in a list which specific class should handle this renderType. This list can be extended with own renderTypes by extensions, existing renderTypes can be overridden, and

  • for complex cases - it is possible to register own resolver classes for single renderTypes that can return a node class name to override the default lookup list.

Table of Contents

Properties

$nodeResolver  : array<string|int, mixed>
Node resolver classes Nested array with nodeName as key, (sorted) priority as sub key and class as value
$nodeTypes  : array<string|int, mixed>
Default registry of node name to handling class

Methods

__construct()  : mixed
Set up factory. Initialize additionally registered nodes.
create()  : NodeInterface
Create a node depending on type
initializeNodeResolver()  : mixed
Add resolver and add them sorted to a local property.
instantiate()  : object
Instantiate given class name
registerAdditionalNodeTypesFromConfiguration()  : mixed
Add node types from nodeRegistry to $this->nodeTypes.

Properties

$nodeResolver

Node resolver classes Nested array with nodeName as key, (sorted) priority as sub key and class as value

protected array<string|int, mixed> $nodeResolver = []

$nodeTypes

Default registry of node name to handling class

protected array<string|int, mixed> $nodeTypes = [ // Default container classes 'flex' => \TYPO3\CMS\Backend\Form\Container\FlexFormEntryContainer::class, 'flexFormContainerContainer' => \TYPO3\CMS\Backend\Form\Container\FlexFormContainerContainer::class, 'flexFormElementContainer' => \TYPO3\CMS\Backend\Form\Container\FlexFormElementContainer::class, 'flexFormNoTabsContainer' => \TYPO3\CMS\Backend\Form\Container\FlexFormNoTabsContainer::class, 'flexFormSectionContainer' => \TYPO3\CMS\Backend\Form\Container\FlexFormSectionContainer::class, 'flexFormTabsContainer' => \TYPO3\CMS\Backend\Form\Container\FlexFormTabsContainer::class, 'fullRecordContainer' => \TYPO3\CMS\Backend\Form\Container\FullRecordContainer::class, 'inline' => \TYPO3\CMS\Backend\Form\Container\InlineControlContainer::class, 'siteLanguage' => \TYPO3\CMS\Backend\Form\Container\SiteLanguageContainer::class, 'inlineRecordContainer' => \TYPO3\CMS\Backend\Form\Container\InlineRecordContainer::class, 'listOfFieldsContainer' => \TYPO3\CMS\Backend\Form\Container\ListOfFieldsContainer::class, 'noTabsContainer' => \TYPO3\CMS\Backend\Form\Container\NoTabsContainer::class, 'outerWrapContainer' => \TYPO3\CMS\Backend\Form\Container\OuterWrapContainer::class, 'paletteAndSingleContainer' => \TYPO3\CMS\Backend\Form\Container\PaletteAndSingleContainer::class, 'singleFieldContainer' => \TYPO3\CMS\Backend\Form\Container\SingleFieldContainer::class, 'tabsContainer' => \TYPO3\CMS\Backend\Form\Container\TabsContainer::class, // Default single element classes 'check' => \TYPO3\CMS\Backend\Form\Element\CheckboxElement::class, 'checkboxToggle' => \TYPO3\CMS\Backend\Form\Element\CheckboxToggleElement::class, 'checkboxLabeledToggle' => \TYPO3\CMS\Backend\Form\Element\CheckboxLabeledToggleElement::class, 'group' => \TYPO3\CMS\Backend\Form\Element\GroupElement::class, 'input' => \TYPO3\CMS\Backend\Form\Element\InputTextElement::class, 'inputDateTime' => \TYPO3\CMS\Backend\Form\Element\InputDateTimeElement::class, 'inputLink' => \TYPO3\CMS\Backend\Form\Element\InputLinkElement::class, 'hidden' => \TYPO3\CMS\Backend\Form\Element\InputHiddenElement::class, 'imageManipulation' => \TYPO3\CMS\Backend\Form\Element\ImageManipulationElement::class, 'none' => \TYPO3\CMS\Backend\Form\Element\NoneElement::class, 'radio' => \TYPO3\CMS\Backend\Form\Element\RadioElement::class, 'selectCheckBox' => \TYPO3\CMS\Backend\Form\Element\SelectCheckBoxElement::class, 'selectMultipleSideBySide' => \TYPO3\CMS\Backend\Form\Element\SelectMultipleSideBySideElement::class, 'selectTree' => \TYPO3\CMS\Backend\Form\Element\SelectTreeElement::class, 'selectSingle' => \TYPO3\CMS\Backend\Form\Element\SelectSingleElement::class, 'selectSingleBox' => \TYPO3\CMS\Backend\Form\Element\SelectSingleBoxElement::class, 'colorpicker' => \TYPO3\CMS\Backend\Form\Element\InputColorPickerElement::class, // t3editor is defined with a fallback so extensions can use it even if ext:t3editor is not loaded 't3editor' => \TYPO3\CMS\Backend\Form\Element\TextElement::class, 'text' => \TYPO3\CMS\Backend\Form\Element\TextElement::class, 'textTable' => \TYPO3\CMS\Backend\Form\Element\TextTableElement::class, 'unknown' => \TYPO3\CMS\Backend\Form\Element\UnknownElement::class, 'user' => \TYPO3\CMS\Backend\Form\Element\UserElement::class, // special renderType for type="user" on sys_file_storage is_public column 'userSysFileStorageIsPublic' => \TYPO3\CMS\Backend\Form\Element\UserSysFileStorageIsPublicElement::class, 'fileInfo' => \TYPO3\CMS\Backend\Form\Element\FileInfoElement::class, 'mfaInfo' => \TYPO3\CMS\Backend\Form\Element\MfaInfoElement::class, 'slug' => \TYPO3\CMS\Backend\Form\Element\InputSlugElement::class, 'language' => \TYPO3\CMS\Backend\Form\Element\SelectSingleElement::class, 'category' => \TYPO3\CMS\Backend\Form\Element\CategoryElement::class, 'passthrough' => \TYPO3\CMS\Backend\Form\Element\PassThroughElement::class, 'belayoutwizard' => \TYPO3\CMS\Backend\Form\Element\BackendLayoutWizardElement::class, // Default classes to enrich single elements 'fieldControl' => \TYPO3\CMS\Backend\Form\NodeExpansion\FieldControl::class, 'fieldInformation' => \TYPO3\CMS\Backend\Form\NodeExpansion\FieldInformation::class, 'fieldWizard' => \TYPO3\CMS\Backend\Form\NodeExpansion\FieldWizard::class, // Element information 'tcaDescription' => \TYPO3\CMS\Backend\Form\FieldInformation\TcaDescription::class, 'adminIsSystemMaintainer' => \TYPO3\CMS\Backend\Form\FieldInformation\AdminIsSystemMaintainer::class, 'backendLayoutFromParentPage' => \TYPO3\CMS\Backend\Form\FieldInformation\BackendLayoutFromParentPage::class, // Element wizards 'defaultLanguageDifferences' => \TYPO3\CMS\Backend\Form\FieldWizard\DefaultLanguageDifferences::class, 'localizationStateSelector' => \TYPO3\CMS\Backend\Form\FieldWizard\LocalizationStateSelector::class, 'otherLanguageContent' => \TYPO3\CMS\Backend\Form\FieldWizard\OtherLanguageContent::class, 'otherLanguageThumbnails' => \TYPO3\CMS\Backend\Form\FieldWizard\OtherLanguageThumbnails::class, 'recordsOverview' => \TYPO3\CMS\Backend\Form\FieldWizard\RecordsOverview::class, 'selectIcons' => \TYPO3\CMS\Backend\Form\FieldWizard\SelectIcons::class, 'tableList' => \TYPO3\CMS\Backend\Form\FieldWizard\TableList::class, // Element controls 'addRecord' => \TYPO3\CMS\Backend\Form\FieldControl\AddRecord::class, 'editPopup' => \TYPO3\CMS\Backend\Form\FieldControl\EditPopup::class, 'elementBrowser' => \TYPO3\CMS\Backend\Form\FieldControl\ElementBrowser::class, 'insertClipboard' => \TYPO3\CMS\Backend\Form\FieldControl\InsertClipboard::class, 'linkPopup' => \TYPO3\CMS\Backend\Form\FieldControl\LinkPopup::class, 'listModule' => \TYPO3\CMS\Backend\Form\FieldControl\ListModule::class, 'resetSelection' => \TYPO3\CMS\Backend\Form\FieldControl\ResetSelection::class, ]

Methods

__construct()

Set up factory. Initialize additionally registered nodes.

public __construct() : mixed

create()

Create a node depending on type

public create(array<string|int, mixed> $data) : NodeInterface
Parameters
$data : array<string|int, mixed>

All information to decide which class should be instantiated and given down to sub nodes

Tags
throws
Exception
Return values
NodeInterface

initializeNodeResolver()

Add resolver and add them sorted to a local property.

protected initializeNodeResolver() : mixed

This can be used to manipulate the nodeName to class resolution with own code.

Tags
throws
Exception

if configuration is incomplete or two resolver with identical priorities are registered

instantiate()

Instantiate given class name

protected instantiate(string $className, array<string|int, mixed> $data) : object
Parameters
$className : string

Given class name

$data : array<string|int, mixed>

Main data array

Return values
object

registerAdditionalNodeTypesFromConfiguration()

Add node types from nodeRegistry to $this->nodeTypes.

protected registerAdditionalNodeTypesFromConfiguration() : mixed

This can be used to add new render types or to overwrite existing node types. The registered class must implement the NodeInterface and will be called if a node with this renderType is rendered.

Tags
throws
Exception

if configuration is incomplete or two nodes with identical priorities are registered


        
On this page

Search results