erag/laravel-case-mapper-request
Composer 安装命令:
composer require erag/laravel-case-mapper-request
包简介
Seamlessly integrate attribute-based case mapping into Laravel FormRequests — transform keys and remap validation errors effortlessly.
关键字:
README 文档
README
A Laravel package that transforms request input keys using PHP 8+ attributes. Supports formats like camelCase, snake_case, StudlyCase, UPPERCASE, enabling flexible data handling from varied sources. Ideal for backend services needing consistent input structures, regardless of client naming conventions.
📦 Designed for Laravel 10, 11, and 12 — No core modification required.
✨ Features
- 🧠 Automatically map incoming request keys to match your validation expectations
- 🧩 Attribute-based syntax using
#[MapName(...)] - 🔄 Supports multiple naming conventions
- 🧩 Integrates seamlessly with Laravel
FormRequest - 📚 Extendable with custom mappers
- ✅ Zero configuration, zero core hacks
- 🎨 Works with any frontend (React, Vue, etc.)
💡 Recommended: Vue or React for best developer experience
🔧 Supported Case Mappers
| Mapper Class | Frontend Input | Validated As output |
|---|---|---|
SnakeCaseMapper |
firstName |
first_name |
CamelCaseMapper |
first_name |
firstName |
StudlyCaseMapper |
FirstName |
first_name |
UpperCaseMapper |
FIRSTNAME |
firstname |
📦 Installation
composer require erag/laravel-case-mapper-request
No config file or publishing required.
Create a Form Request with Case Mapping
🧩 1. Create a Form Request class
php artisan make:request ContactRequest
🧩 2. Add the attribute and trait
use LaravelCaseMapperRequest\Attributes\MapName; use LaravelCaseMapperRequest\Traits\HasKeyTransformers; use LaravelCaseMapperRequest\Mappers\SnakeCaseMapper; #[MapName(SnakeCaseMapper::class)] // or CamelCaseMapper, UpperCaseMapper, StudlyCaseMapper etc. class ContactRequest extends FormRequest { use HasKeyTransformers; public function authorize(): bool { return true; } public function rules(): array { return [ 'first_name' => 'required|string', 'last_name' => 'required|string', 'email_address' => 'required|email', ]; } }
🧩 3. Use it in a Controller
use App\Http\Requests\ContactRequest; class ContactController extends Controller { public function store(ContactRequest $request) { $validated = $request->validated(); // Example: // Contact::create($validated); return response()->json([ 'message' => 'Submitted successfully!', 'data' => $validated ]); } }
Step 3: Frontend Input Example (Vue + Inertia)
<template> <form @submit.prevent="submit"> <input v-model="form.firstName" placeholder="First Name" /> <input v-model="form.lastName" placeholder="Last Name" /> <input v-model="form.emailAddress" placeholder="Email" /> <button type="submit">Submit</button> </form> </template> <script setup> import { useForm } from '@inertiajs/vue3' const form = useForm({ firstName: '', lastName: '', emailAddress: '' }) function submit() { form.post('/form/snake') } </script>
Step 4: Backend Automatically Maps It
Incoming :
{
"firstName": "Amit",
"lastName": "Gupta",
"emailAddress": "amit@example.com"
}
Mapped for Validation output:
[ 'first_name' => 'Amit', 'last_name' => 'Gupta', 'email_address' => 'amit@example.com' ]
🧠 Defining Your Own Case Mapper
Need to support a custom casing style or transformation logic?
You can easily create your own mapper by implementing the CaseMapperContract
Just implement the contract:
use LaravelCaseMapperRequest\Contracts\CaseMapperContract; class KebabCaseMapper implements CaseMapperContract { public static function map(array $data): array { return collect($data) ->mapWithKeys(fn($value, $key) => [Str::kebab($key) => $value]) ->toArray(); } }
Then apply to any FormRequest:
#[MapName(KebabCaseMapper::class)]
📄 License
MIT © Amit Gupta
🔗 Connect
Made with ❤️ by Amit Gupta
⭐ Found this useful? Star it on GitHub!
erag/laravel-case-mapper-request 适用场景与选型建议
erag/laravel-case-mapper-request 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 511 次下载、GitHub Stars 达 4, 最近一次更新时间为 2025 年 07 月 19 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「validation」 「attribute」 「laravel」 「camelcase」 「snake_case」 「uppercase」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 erag/laravel-case-mapper-request 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 erag/laravel-case-mapper-request 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 erag/laravel-case-mapper-request 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A package for automatically encrypting and decrypting Eloquent attributes in Laravel 5.5+, based on configuration settings.
Adds request-parameter validation to the SLIM 3.x PHP framework
A jQuery augmented PHP library for creating and validating HTML forms
Powerful class discovery system for Laravel with attribute-based scanning, directory traversal, and monorepo support
A Laravel validator for delimiter-separated list of emails.
A CakePHP behavior to validate foreign keys
统计信息
- 总下载量: 511
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 32
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-07-19