2

Something like Request::only() that throws an error if there is any extra/unexpected field in the request?

E.g.:

$request->strictly(['username', 'password']);

that would throw an error if POST request contains fields 'username', 'password', and 'foo'?

In case there isn't, what would be the best way to perform such a verification manually?

Jignesh Joisar
  • 13,720
  • 5
  • 57
  • 57
Your Common Sense
  • 156,878
  • 40
  • 214
  • 345

1 Answers1

2

You can create your own strictly method in the request class using Macro

AppServiceProvider.php and inside boot method add this method

use Illuminate\Http\Request;
use Illuminate\Validation\ValidationException;

public function boot()
{
     Request::macro('strictly', function(array $paramaters) {
       $array = array_diff(request()->keys(), $paramaters);
        if (count($array) > 0) {
            throw ValidationException::withMessages(
                collect($array)->map(function ($row) {
                    return [$row => 'not needed'];
                })->collapse()->all()
            );
        }
      });
}

Now You can use this method inside the controller or request class

request()->strictly(['username', 'password']);
Jignesh Joisar
  • 13,720
  • 5
  • 57
  • 57