An author declares the child configuration once in its ComponentDefinition:
AcmeNameField is the author’s actual field class. The default FluentChildFactory
creates it through make() and automatically binds declared option names to
same-name public, non-static fluent methods. The approved methods are checked
once when the contract is constructed. No caller can choose a method by submitting
its name. Every parent can now use a three-argument ChildSlot for this child.
When a method takes multiple arguments, map them once in the child contract:
Provide the entire argument group or omit it. Partial groups reject. A custom
typed ChildFactory can implement transformations instead of the default fluent
factory. Locked bound options are reapplied after the per-instance PHP callback;
state ownership and parent readonly restrictions are enforced last. For a child
without a published data contract, an explicit renderer plus configure still
allows its full public PHP API without a parent-specific factory.
For example, declare an existing Text Input in the parent’s children map:
Data contracts intentionally expose only declared options. The system does not
turn every public method of every component into a JSON endpoint. PHP-only
callbacks, query builders and application authorization stay in trusted PHP.
Explicit slot factories and schemas remain supported;
they cannot discard a registered locked option or substitute a different
registered renderer.
Configuration snapshots and limits
Declared configuration is retained independently of your source arrays, including
arrays containing PHP references. Later changes to those arrays cannot change
option defaults, locked policies, child mappings or resolved instance options.
The schema accepts up to 128 declared options and eight ordered layers. Each data
payload is limited to 4,096 nodes, 16 levels and 64 KiB of compact JSON, including
escaping and punctuation. Objects and callbacks belong in trusted PHP configuration,
not saved option data. Family schema exchange preserves 1.0 as a number with a
fractional part and supports UTF-8 text within its separate 1 MiB export limit.
Continue reading
Extension guides · Definition and registration reference Last modified on October 16, 2026