Laravel 5.4 nabízí dva nové middleware ConvertEmptyStringsToNull  a TrimStrings, které ještě více ulehčují práci s kontrolou hodnot z requestu. S jejich použitím je ale potřeba počítat i s validací formulářových polí, které se musí správně upravit.

TrimStrings

Jak název napovídá, middleware TrimStrings automaticky trimuje všechny data z requestu, takže se nemusíme bát situací, kdy například uživatel přidá mezeru navíc ve formuláři. Uveďme příklad, kdy bychom měli formulář pro zadání emailu při zasílání novinek. Pokud někdo zadal mezeru navíc, tak jsme dostali tento výsledek: ```php dd(request('email')); // 'demo@example.org ' <- mezera na konci stringu ```

Pokud bychom ale přidali middleware TrimStrings do App/Kernel.php:

protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\TrimStrings::class,

Jako výsledek dostaneme:

dd(request('email'));
// 'demo@example.org'

Prázdný řetězec na null

Middleware ConvertEmptyStringsToNull funguje prakticky stejně jako TrimStrings. Jako příklad můžeme uvést formulářové pole, které není povinné a odpovídá nulovému sloupci v databázi.

Například pokud bychom měli při registraci nového uživatele možnost zadat i svůj věk, který ale není povinný:

<input type="text" name="age" value="">

Pokud bychom pole nechali nevyplněné, dostali bychom prázdný string:

dd(request('age'));
// ''

S middlewarem ConvertEmptyStringsToNull budeme ale mít tento výsledek:

dd(request('age'));
// null

Validace ConvertEmptyStringsToNull

Díky tomu, že prázdný string z requestu se změní na null, ale následující validační pravidlo selže: ```php "age" => "integer" ```

Je to z toho důvodu, že věk je null a abychom prošli validací, je nutné k pravidlu přidat podmínku nullable:

"age" => "nullable|integer"