Skip to main content
configure receives the real child renderer and its ChildRenderContext. It can use the component’s public methods, closures, rules, relations and application services. Return the same field from a fluent chain, or return nothing. Returning a replacement field is rejected. The callback is created for the current render; it is not serialized or stored in the registry. For a relation, keep query and authorization decisions in PHP:
Attach the model class for create or the actual record for edit to the parent schema. Native relationship hydration, selection validation and relationship callbacks remain available. The application still owns its transaction, endpoint authorization and model save. In particular, an independently nested BelongsTo selection does not become a top-level foreign-key attribute just because it is inside a composite field. With a custom save flow, validate first, attach the saved record for create, call saveRelationships() and save any existing model whose association has changed. Keep those operations in the application’s authorized transaction. Do not pass a relation name or query callback from untrusted JSON. For actual cursor pagination, supply a provider and a selected-value resolver:
The example repository is application code. Its page() returns items containing value/label, an opaque cursor, and hasMore; allowedLabel() returns null for an inaccessible selection. Setting paginatedSearchResults alone does not create a database pagination query. Virtualization controls presentation; it does not authorize values or replace a scoped query.

Continue reading

Reusable child contracts · Validation
Last modified on October 17, 2026