Php Laravel 5.4有时“要求验证,但未提出”;空";输入
我在验证请求中有时只会出现的输入时遇到问题Php Laravel 5.4有时“要求验证,但未提出”;空";输入,php,laravel,validation,laravel-5.4,Php,Laravel,Validation,Laravel 5.4,我在验证请求中有时只会出现的输入时遇到问题 // Controller public function update(Request $request, User $user) { $updateResult = $user->updateUser($request); return dd($updateResult); } // User Model protected $validation = [ 'rules' => [ '
// Controller
public function update(Request $request, User $user)
{
$updateResult = $user->updateUser($request);
return dd($updateResult);
}
// User Model
protected $validation = [
'rules' => [
'email' => [
'sometimes',
'email',
'required',
],
'password' => [
'sometimes',
'min:6',
'required',
],
'first_name' => [
'sometimes',
'required',
],
'last_name' => [
'sometimes',
'required',
],
],
'messages' => [
'email.required' => 'An email is required.',
'email.email' => 'The email must be valid.',
'password.required' => 'A password is required.',
'password.min' => 'Your password must be at least six (6) characters long.',
'first_name.required' => 'Your first name is required.',
'last_name.required' => 'Your last name is required.',
],
];
public function updateUser(Request $request)
{
$validation = Validator::make($request->all(), [
$this->validation['rules'],
$this->validation['messages'],
]);
if ($validation->fails())
{
return $validation;
}
else
{
return "OK";
}
}
因此,在某些更新页面中,$request->all()只包含这些字段的一个子集。但是,即使存在字段,但值为null,也不会触发required
[
'first_name' => null,
'last_name' => 'Davidson',
'job_title' => 'Tech Support',
]
上面的请求数组将返回“OK”。。。如果我有时从字段中删除,那么当发送部分输入请求时,它会失败,说字段是必需的
我正在清除此处缺少的内容,但通过阅读文档,我认为我已经正确配置了:
在某些情况下,您可能希望对
仅当输入数组中存在该字段时才使用该字段。速
为此,请将“有时”规则添加到规则列表中:
$v=验证器::生成($data、[
“电子邮件”=>“有时|必需|电子邮件”,])
在Laravel 5.4中,空字符串由ConvertEmptyStringsToull中间件转换为Null。。。这可能会给你带来一些问题 您应该将nullable添加到所有可选验证中
希望这有助于在Laravel 5.4中,通过ConvertEmptyStringsToull中间件将空字符串转换为Null。。。这可能会给你带来一些问题 您应该将nullable添加到所有可选验证中
希望这有帮助您面临的问题仅仅是由于调用验证程序时出错。第二个参数不是您传递的多维数组。规则数组和消息数组是独立的参数
$validation = Validator::make($request->all(), [
$this->validation['rules'],
$this->validation['messages'],
]);
应该由
$validation = Validator::make($request->all(),
$this->validation['rules'], $this->validation['messages']);
您面临的问题仅仅是由于您对验证器的调用中的错误造成的。第二个参数不是您传递的多维数组。规则数组和消息数组是独立的参数
$validation = Validator::make($request->all(), [
$this->validation['rules'],
$this->validation['messages'],
]);
应该由
$validation = Validator::make($request->all(),
$this->validation['rules'], $this->validation['messages']);
永远不会像预期的那样工作。有时表示:如果有什么事情发生,下一条规则是什么?在这种情况下,“必需”。需要什么?将此更改为:
'first_name' => [
'sometimes',
'required',
'min:1',
],
如果没有输入,空值仍然是空值,并且不会失败。如果要在表中保留字段的值以进行更新,请在表单中填充输入值
null值作为'
发送,并由app\Http\kernel.php中间件中的转换器ptuptystringstonull::class
设置为null
永远不会像预期的那样工作。有时表示:如果有什么事情发生,下一条规则是什么?在这种情况下,“必需”。需要什么?将此更改为:
'first_name' => [
'sometimes',
'required',
'min:1',
],
如果没有输入,空值仍然是空值,并且不会失败。如果要在表中保留字段的值以进行更新,请在表单中填充输入值
null值作为
'
发送,并由app\Http\kernel.php中间件中的转换器ptuptystringstonull::class
设置为null 这就是我喜欢stackoverflow的地方。。。一双额外的眼睛。这真让我发疯。我真的不知道这个数组是怎么来的,一定是因为建立规则的肌肉记忆。接得好!再次感谢。这就是我喜欢stackoverflow的地方。。。一双额外的眼睛。这真让我发疯。我真的不知道这个数组是怎么来的,一定是因为建立规则的肌肉记忆。接得好!再次感谢。有时规则和要求是完全有效的场景。它基本上是这样说的:“如果存在一个字段,那么它就不能为null或为空。”有时规则和必需的规则是完全有效的场景。它基本上是这样说的:“如果存在一个字段,那么它不能为null或为空”我认为指向文档的链接正常:我认为指向文档的链接正常: