Repository navigation
[6.x] Forms 2: Unique Instances - #15255
Open
duncanmcclean wants to merge 172 commits into
Open
duncanmcclean wants to merge 172 commits into
duncanmcclean wants to merge 172 commits into
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…need to use antlers Using Antlers in email address fields is still supported, but this is a slightly easier approach for end-users.
the `connections()` setter now backfills row ids, which this assertion (merged in after that change) didn't account for. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0199zXuG4CtZsGqCy5Gm65io
these two tests were deleted on purpose in 29d7e78 when the `DeleteTemporaryFiles` job moved out of `SendEmails` and into the job chain built by `Submission::finalize()`. they were only added back by a bad merge conflict resolution when merging `forms-2` into `forms-2-connections` (72b9e33). the behaviour is already covered by `SubmissionTest` and `DeleteTemporaryFilesTest`. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qe1g6yd25kh7oTxtWfzB95
…etching in larger spaces like stacks
Co-authored-by: Duncan McClean <duncan@duncanmcclean.com> Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
# Conflicts: # resources/js/bootstrap/fieldtypes.js # src/Providers/ExtensionServiceProvider.php
…tances # Conflicts: # resources/js/bootstrap/fieldtypes.js # resources/js/pages/forms/submissions/Show.vue # src/Providers/ExtensionServiceProvider.php
…2-unique-instances # Conflicts: # resources/js/bootstrap/fieldtypes.js # src/Providers/ExtensionServiceProvider.php
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request implements "unique instances" for forms: a Forms Pro feature which lets a form be treated as its own instance per entry, with submissions tracked against the entry they were submitted from, rather than in aggregate.
The classic use case is an Events collection where every event has its own RSVP form — each event gets its own submissions, its own capacity and its own close date, all from a single
rsvpform.Like multi-page forms, everything lives in core but is only available when the
statamic/forms-proaddon is installed.Enabling unique instances
Toggle on "Unique Instances" in the form's configure screen, then attach the form to entries using the
formfieldtype.The frontend
When
{{ form:create }}is rendered in an entry's context, it outputs a hidden_entryinput, and the submission is tracked against that entry.Per-entry restrictions & overrides
When unique instances is enabled, the form's Access settings are evaluated per entry:
Connections are overridable in the same way, so each entry can have its own notifications. A warning banner is visible when configuring connections on a form with "unique instances" enabled.
CleanShot.2026-08-24.at.21.42.58.mp4
In the Control Panel
The submissions listing shows which entry each submission came from, and can be filtered down to a single entry.
On the entry's publish form, the form fieldtype has a "View Submissions" option which opens the entry's submissions in a stack, with individual submissions opening in a nested stack. The fieldtype's index view links to the pre-filtered submissions listing, and the submission page links back to the entry.
PHP API
The form fieldtype's value is stored as a plain handle until an entry has overrides, at which point it becomes an array with
formandconfigkeys.Restriction logic lives on a new
Instanceclass, since "is this form open?" becomes a per-entry question when unique instances is enabled:Depends on: