Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Statamic Easy Forms Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Getting Started

This release is a config-and-translations update, not an API change — existing installs keep working without edits. Start here:

  1. 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.

  2. 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).

  3. 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.

Implementation Patterns

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.

Gotchas and Tips

  • Silent reCAPTCHA skip is a security-adjacent behaviour change. If the secret is configured but 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.
  • Localization depends on published translations. 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.
  • Config caching. 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.
  • Placeholder fix scope. The translated placeholders cover date, select, dictionary, and improved-select fields specifically. Custom fieldtypes rendering their own placeholders still need their own translation handling.
  • Debugging locale resolution. If messages come back in the wrong language, log the active site/locale at submission time before assuming a package bug — form submissions are often handled by a controller or webhook where App::getLocale() may not match the page locale.
  • Extension point: keep a project-level config override (e.g. config/easy-forms.php in version control, not republished blindly) so upgrade --force publishes don't silently reset the toggle.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core