PHPackages                             jcergolj/request-input-transformer-for-laravel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. jcergolj/request-input-transformer-for-laravel

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

jcergolj/request-input-transformer-for-laravel
==============================================

A Laravel package for transforming request inputs

v1.0(11mo ago)234MITPHP

Since May 28Pushed 11mo ago1 watchersCompare

[ Source](https://github.com/jcergolj/request-input-transformer-for-laravel)[ Packagist](https://packagist.org/packages/jcergolj/request-input-transformer-for-laravel)[ RSS](/packages/jcergolj-request-input-transformer-for-laravel/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (4)Versions (2)Used By (0)

Request Input Transformer for Laravel
=====================================

[](#request-input-transformer-for-laravel)

**Clean up your `prepareForValidation()` — the right way.**

[![Latest Version on Packagist](https://camo.githubusercontent.com/99b3cf5884487aadac389676740896eebd5ac10226e89a460335766083e3bba3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6a636572676f6c6a2f726571756573742d696e7075742d7472616e73666f726d65722d666f722d6c61726176656c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/jcergolj/request-input-transformer-for-laravel)

[![Total Downloads](https://camo.githubusercontent.com/eadd97fb14d01c64c83b3466c4abdaae9a8f772369b7eb354e473d6b87c45a9c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6a636572676f6c6a2f726571756573742d696e7075742d7472616e73666f726d65722d666f722d6c61726176656c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/jcergolj/request-input-transformer-for-laravel)

---

Why?
----

[](#why)

If you’ve built more than a couple of Laravel apps, you’ve probably ended up stuffing too much logic into `prepareForValidation()`.

Maybe you’ve written code like this:

```
protected function prepareForValidation(): void
{
    $this->merge([
        'email' => Str::of($this->email)->trim()->lower()->toString(),
        'first_name' => Str::of($this->first_name)->trim()->ucfirst()->toString(),
        'last_name' => Str::of($this->last_name)->trim()->ucfirst()->toString(),
        //...
    ]);
}
```

We've all been there — a quick `trim()` here, a `lower()` there. But soon, `prepareForValidation()` is packed with string cleanup, formatting, and conditionals.

This package solves this.

Installation
------------

[](#installation)

```
composer require jcergolj/request-input-transformer-for-laravel
```

Under the Hood: Pipeline Pattern
--------------------------------

[](#under-the-hood-pipeline-pattern)

This package uses Laravel’s [Pipeline Pattern](https://laravel.com/docs/12.x/helpers#pipeline) under the hood.

That means your modifiers and transformers are run one by one, just like middleware — each one gets the current value (or request), does its thing, and passes it to the next.

Modifiers vs Transformers
-------------------------

[](#modifiers-vs-transformers)

This package gives you two ways to work with request input: **modifiers** and **transformers**.

### 🛠 Modifiers

[](#-modifiers)

Modifiers change values of **existing fields** in the request — great for cleanup and normalization.

```
// Modifying the 'email' field
'email' => [new Trim(), new Lowercase()],
```

Use modifiers when the field already exists and you need to modify only that field .

**Modifiers merges fields automatically inside pipeline `then` method.**

### 🔄 Transformers

[](#-transformers)

Transformers have access to the entire request and can add or change fields based on logic, relationships, or conditions.

```
new AddFullName(),
new RemoveItemIfEmpty(),
```

Use transformers when you need to generate new fields or apply logic that involves more than one input.

Nested Input Support
--------------------

[](#nested-input-support)

This package supports nested input keys — including wildcard syntax — out of the box. You can apply modifiers or transformers to fields like:

```
'members.*.email' => [new Trim()],
```

Usage
-----

[](#usage)

### Step 1: Create a Modifier and Transformer

[](#step-1-create-a-modifier-and-transformer)

#### Modifier: Trim strings

[](#modifier-trim-strings)

```
namespace App\Http\Modifiers;

class Trim
{
    public function handle($value, $next)
    {
        return $next(trim($value));
    }
}
```

#### Transformer: Generate a full name from first and last name

[](#transformer-generate-a-full-name-from-first-and-last-name)

```
