使用修改的输入字段名称进行 Laravel 注册测试



环境

  • 拉维尔版本:6.1.0
  • PHP 版本: 7.3.10

描述:

我有一个自定义的Laravel身份验证,其中包括不同的字段名称。我的密码字段是大写 P 的密码。 我有以下断言:

$this->assertFalse(session()->hasOldInput('Password'));

以下转储显示输入的密码。

dd(session()->getOldInput('Password');

看起来验证者不知道从返回中省略新密码字段。 我可以在控制器中做到这一点

... ->withInput($request->only(['FirstName', 'LastName', 'Email']))

但这对验证器不起作用。

我深入研究了这些文件:

vendor/laravel/framework/src/Illuminate/Validation/Validator.php vendor/laravel/framework/src/Illuminate/Validation/ValidationException.php

但是他们没有提到密码。任何线索验证器在哪里过滤请求或如何向其添加自定义过滤器?

此外,这些是我的控制器中的规则:

return Validator::make($data, [
'FirstName' => ['required', 'string', 'max:255'],
'LastName' => ['required', 'string', 'max:255'],
'Email' => ['required', 'string', 'email', 'max:255'],
'Password' => ['required', 'string', 'min:6', 'confirmed'],
]);

如果我在全新安装或将字段名称作为"密码"的 laravel 上运行我的测试,它可以工作。

将自定义字段名称添加到appExceptionsHandler.php中的$dontFlash数组

protected $dontFlash = [
'Password',
'Password_confirmation',
];

https://github.com/laravel/laravel/blob/master/app/Exceptions/Handler.php

最新更新