reachweb/statamic-easy-forms
Statamic Easy Forms is a simple form builder addon for Statamic that lets you create and manage forms in the control panel, handle validation and submissions, and send email notifications without custom code. It fits naturally into Laravel and Statamic projects.
This release is a config-and-translations update, not an API change — existing installs keep working without edits. Start here:
Upgrade and republish config (only if you want the new toggle):
composer update vendor/easy-forms
php artisan vendor:publish --tag=easy-forms-config --force
Diff the published config/easy-forms.php against your version before committing — --force overwrites local edits.
Where to look first: config/easy-forms.php for localize_submissions, then your lang/ (or resources/lang/) directory for the field placeholder strings (Please select, date/select/dictionary/improved-select messages).
First use case — multilingual contact form: enable per-site submission localization on a multisite install:
EASY_FORMS_LOCALIZE_SUBMISSIONS=true
Then submit the same form from a /de/ and /en/ page and confirm both the validation errors and the reCAPTCHA failure message come back in the page's language rather than the app default.
Opt-in localization, per environment. Keep localize_submissions off in local/CI (stable assertions, no locale juggling) and on in production multisite. Because it's env-backed, you can flip it per environment without code branches:
'localize_submissions' => env('EASY_FORMS_LOCALIZE_SUBMISSIONS', false),
Translate once, reuse everywhere. Placeholders and validation messages now share the same translation source. Put all form-facing strings in your language files keyed by field handle, and let the package resolve them per active site — don't hardcode placeholder="Please select" in your Antlers/Blade templates, or you'll re-break what this release fixed.
Conditional reCAPTCHA in mixed environments. Since v2.1.0 safely skips verification (with a warning) when a secret is set but google/recaptcha is absent, you can ship a config with keys present and install the package only where needed. Good pattern: keep the secret in .env for all environments, install the dependency in require (not require-dev) for production-like environments, and treat the warning as a deployment smoke-test signal.
Integration tip — assert locale in tests. For multisite apps, add a feature test that posts an invalid payload from a localized route and asserts the translated error key, so a future release can't silently regress per-site localization.
google/recaptcha isn't installed, validation no longer errors — it passes with a warning. Check your logs after deploy; a missing dependency now means forms are effectively unprotected rather than loudly broken.localize_submissions only changes which locale is used for messages; if the target site's language files lack the keys, you'll get fallback strings, not errors. Verify each site's lang/ directory.localize_submissions is read from config — run php artisan config:clear (or re-cache) after changing the env var, especially in multisite setups where you may be tempted to toggle at runtime. Runtime config()->set() before the form renders works, but avoid it mid-request.App::getLocale() may not match the page locale.config/easy-forms.php in version control, not republished blindly) so upgrade --force publishes don't silently reset the toggle.How can I help you explore Laravel packages today?