是否有 request/validation 规则会在意外输入时抛出错误?
Is there a request/validation rule that would throw an error in case of unexpected input?
如果请求中有任何 extra/unexpected 字段,类似 Request::only()
的东西会抛出错误?
例如:
$request->strictly(['username', 'password']);
如果 POST 请求包含字段 'username'、'password' 和 'foo'?
,则会引发错误
如果没有,手动执行此类验证的最佳方法是什么?
您可以使用 Macro
在请求 class 中创建自己的 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()
);
}
});
}
现在您可以在控制器或请求中使用此方法class
request()->strictly(['username', 'password']);
如果请求中有任何 extra/unexpected 字段,类似 Request::only()
的东西会抛出错误?
例如:
$request->strictly(['username', 'password']);
如果 POST 请求包含字段 'username'、'password' 和 'foo'?
,则会引发错误如果没有,手动执行此类验证的最佳方法是什么?
您可以使用 Macro
在请求 class 中创建自己的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()
);
}
});
}
现在您可以在控制器或请求中使用此方法class
request()->strictly(['username', 'password']);