是否有请求/验证规则会在意外输入的情况下引发错误?

问题描述 投票:0回答:1

如果请求中存在任何额外/意外字段,类似

Request::only()
的内容会引发错误?

例如:

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

如果 POST 请求包含“用户名”、“密码”和“foo”字段,会抛出错误吗?

如果没有,手动执行此类验证的最佳方法是什么?

php laravel input request laravel-request
1个回答
2
投票

您可以使用

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']);
© www.soinside.com 2019 - 2024. All rights reserved.