如果请求中存在任何额外/意外字段,类似
Request::only()
的内容会引发错误?
例如:
$request->strictly(['username', 'password']);
如果 POST 请求包含“用户名”、“密码”和“foo”字段,会抛出错误吗?
如果没有,手动执行此类验证的最佳方法是什么?
您可以使用
Macro在请求类中创建自己的
strictly
方法
AppServiceProvider.php
并在boot
方法中添加此方法
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()
);
}
});
}
现在您可以在控制器或请求类中使用此方法
request()->strictly(['username', 'password']);