doublethreedigital/guest-entries
Let visitors submit entries to your Statamic collections without needing an account. Guest Entries provides a simple front-end form endpoint with configurable validation, spam protection, and control over which fields and collections guests can post to.
composer require <vendor>/<package>:^5.2.1 — treat 5.2.1 as the minimum version; the 5.2.x line closes several upload, lookup, and mass-assignment issues, so pinning below it is not advisable on any public-facing install.php artisan vendor:publish) and read it before writing code. The two knobs that matter most day-to-day are the validation toggle and the guest-submission settings — they change the shape of every request you send.POST that creates an entry with one file upload, then a PATCH that updates it. That single loop exercises entry lookup, validation, file handling, and asset path resolution — the four areas this release hardened.Entry CRUD
update/destroy. Since lookups were hardened, sending the wrong identifier type (ID where a slug/handle is expected, or a soft-deleted/stale ID) now fails closed rather than silently resolving. Make your frontend send back exactly the identifier the store/index response gave you.404 on update/destroy as "not found or not visible to you" — do not branch UX on the distinction.Validation
422 generically. Invalid input is normalised now, so error text/keys are less specific than before; don't parse them, map them.File uploads and assets
multipart/form-data, and store the asset reference the package returns rather than reconstructing a path from the filename. Path-based references are the exact thing hardened in #122.Guest submissions
saving/creating listener, a form request's prepareForValidation, or an Action that wraps the submission.Testing
actingAs() for the authenticated path and bare requests for the guest path. Add regression tests for: invalid entry ID on update/destroy, guest attempting a reserved field, an SVG upload, and an upload with a disallowed extension. Those four tests cover the entirety of this release.xlink:href to remote resources, embedded scripts, and some filter/animation primitives may be stripped. If you serve SVG icons/sprites through this package, diff a sanitized output against the original once, then decide whether to keep SVG or pre-rasterise.php artisan config:clear route:clear — since config and route registration changed behaviour in this line. On production, re-run config:cache/route:cache.How can I help you explore Laravel packages today?