jaikumar0101/laravel-inputbag
Fluent builder to standardize Laravel request inputs for search, pagination, and sorting. Provides sensible defaults, configurable global settings, and custom field mappings so controllers stay clean and API responses remain consistent (array or collection output).
ValidatedRequest), which could lead to duplicated logic if not managed carefully.$request->input('page')) would require refactoring to adopt the fluent API.ValidatedRequest or FormRequest), adding a minor dependency.ValidatedRequest).spatie/laravel-query-builder or darkaonline/l5-swagger.ValidatedRequest).Phase 1: Pilot Endpoint
InputBag.// Before
$page = $request->input('page', 1);
$sort = $request->input('sort', 'created_at');
$search = $request->input('search', '');
// After
$inputs = InputBag::make($request)
->page(1)
->sort('created_at')
->search('');
Phase 2: Config-Driven Defaults
php artisan vendor:publish --provider="Jaikumar0101\InputBag\InputBagServiceProvider").default_page_size: 20) to reduce per-endpoint boilerplate.Phase 3: Full Adoption
?page=2&sort=-name).FormRequest, extend it to integrate InputBag:
public function rules() {
$inputs = InputBag::make($this->request)->validateOnly(['search', 'page']);
return [
'search' => 'sometimes|string|max:255',
'page' => 'sometimes|integer|min:1',
];
}
$request before InputBag processes it.composer require jaikumar0101/laravel-inputbag
InputBag in isolation (mock $request).InputBag may require refactoring if the package is abandoned.MethodNotFoundException for typos).InputBag").LIMIT/OFFSET usage.| Scenario | Risk | Mitigation |
|---|---|---|
| Malformed input | Invalid pagination/sort params | Use Laravel’s validation (e.g., ValidatedRequest). |
| Missing config | Defaults not applied | Publish config and validate defaults. |
| Package abandonment | No updates | Fork or extract core logic into a private package. |
| Version conflicts | Laravel 11/12 dependency | Pin version in composer.json. |
| Over-eager adoption | Breaks existing logic | Pilot first; use feature flags for rollout. |
InputBag.snake_case for sort fields").InputBag defaults.How can I help you explore Laravel packages today?