baleethai/filament-thailand-location-picker
A Filament PHP plugin for Laravel that adds a Thailand location picker to forms. Choose provinces, districts, and subdistricts via cascading selects, with built-in Thai address data and postal codes for faster, more accurate Thai address entry in Filament admin panels and resource forms.
Architecture fit
ProvinceSelect, DistrictSelect, SubdistrictSelect, zip code, plus Region/Geo) that slots directly into an existing Filament panel form schema — no new service, no frontend build step, no separate address microservice.Integration feasibility
PanelProvider + adding fields to the schema. Additive and low-ceremony.enable_geo toggle (global config plus per-field ->geoEnabled(false)) and publishable en/th JSON translation files. Nothing in the release notes suggests a breaking change, and no existing API is removed or renamed.name_th/name_en), not in wiring the fields.Technical risk
App::getLocale(), while the data columns follow the separate thailand-plugin.locale config. These can diverge, producing English labels over Thai province names (or the reverse) in the same form. This needs an explicit team convention and a test case, or it will surface as a UI defect.enable_geo default is undocumented in the notes. If the default is true, the release is backward compatible. If false, existing forms silently lose the Region selector and any cascaded filtering that depended on it. Must be verified before upgrading.Key questions
enable_geo on upgrade — does it preserve existing behavior?region column?App::getLocale() returns a value other than en/th (e.g., th_TH, ja)?Stack fit
Migration path
Compatibility
lang/vendor/thailand-plugin/{en,th}.json) — supported by any current Laravel version.App::getLocale() will typically return en or th here, but any th_TH-style configuration will miss the lookup and fall back.Sequencing
enable_geo.->geoEnabled(false) over the global switch unless the whole application genuinely doesn't need Region.config:cache run in CI.Maintenance
Support
enable_geo globally is a visible, application-wide UX change. Treat it as a product decision with a changelog entry, not a config tweak.Scaling
Failure modes
thailand-plugin.province); caught only if someone inspects the form in the affected locale.en/th → unverified fallback behaviour; could show English in a Thai-only deployment.config:cache not cleared after changing enable_geo → change appears not to apply, generating a spurious bug report.Ramp-up
How can I help you explore Laravel packages today?