Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel 4 : Best Practice to Trim Input before Validation

Now, I do trim for each input separately like below code:

$username = trim(Input::get('username'));
$password = trim(Input::get('password'));
$email    = trim(Input::get('email'));

$validator = Validator::make(array('username' => $username, 
                                   'password' => $password, 
                                   'email'    => $email), 
                             array('username' => 'required|min:6', 
                                   'password' => 'required|min:6', 
                                   'email'    => 'email'));

Is any approach to do Trim at the same time with

Input::all() or Input::only('username', 'password', 'email')?

And what is the best practice to do this?

like image 989
Chen-Tsu Lin Avatar asked Mar 14 '14 08:03

Chen-Tsu Lin


1 Answers

Note: This solution won't work if any of your inputs are arrays (such as "data[]").

You may try this, trim using this one line of code before validation:

Input::merge(array_map('trim', Input::all()));

Now do the rest of your coding

$username = Input::get('username'); // it's trimed 
// ...
Validator::make(...);

If you want to exclude some inputs from trimming then you may use following instead if all()

Input::except('password');

Or you may use

Input::only(array('username'));

Update: Since Laravel 5.4.* inputs are trimmed because of new TrimStringsmiddleware. So, no need to worry about it because this middleware executes on every request and it handles array inputs as well.

like image 174
The Alpha Avatar answered Sep 24 '22 13:09

The Alpha