Laravel 5.7 对 3 个字段使用 required_with 和 required_with_all 的验证不起作用
Laravel 5.7 validation using required_with and required_with_all for 3 fields does not work
我的问题是使用 required_with
和 required_with_all
进行 Laravel 验证的逻辑如何工作?
我已阅读文档,但无法从中得到任何信息documentation link
我申请了 3 个不同的领域
现在让我举个例子来得到我想要的
'start' => 'nullable|required_with:end',
'end' => 'nullable|required_with:start',
'repeat' => 'nullable|required_with_all:start,end',
如果我只提交重复字段,则不会在 Laravel 中执行任何验证。
您可以从我复制的代码中删除 nullable is,如果您只提供重复字段,仍然不会执行任何验证。
OP真正想要的是:
- 能够提交开始和结束而不重复出现
- 开始和结束必须在一起
- 如果存在开始或结束,则无法提交重复
use Illuminate\Validation\Validator;
class MyFormRequest extends FormRequest
...
public function rules()
{
return [
'start' => 'required_with:end|required_without:repeat',
'end' => 'required_with:start|required_without:repeat',
'repeat' => 'required_without_all:start,end',
];
}
public function withValidator(Validator $validator)
{
$validator->after(function ($validator) {
if ((!$this->input('start') || !$this->input('end')) && $this->input('repeat')) {
$validator->errors()->add('repeat', 'The repeat field is required when start and end are present.');
}
});
}
}
我的问题是使用 required_with
和 required_with_all
进行 Laravel 验证的逻辑如何工作?
我已阅读文档,但无法从中得到任何信息documentation link
我申请了 3 个不同的领域
现在让我举个例子来得到我想要的
'start' => 'nullable|required_with:end',
'end' => 'nullable|required_with:start',
'repeat' => 'nullable|required_with_all:start,end',
如果我只提交重复字段,则不会在 Laravel 中执行任何验证。
您可以从我复制的代码中删除 nullable is,如果您只提供重复字段,仍然不会执行任何验证。
OP真正想要的是:
- 能够提交开始和结束而不重复出现
- 开始和结束必须在一起
- 如果存在开始或结束,则无法提交重复
use Illuminate\Validation\Validator;
class MyFormRequest extends FormRequest
...
public function rules()
{
return [
'start' => 'required_with:end|required_without:repeat',
'end' => 'required_with:start|required_without:repeat',
'repeat' => 'required_without_all:start,end',
];
}
public function withValidator(Validator $validator)
{
$validator->after(function ($validator) {
if ((!$this->input('start') || !$this->input('end')) && $this->input('repeat')) {
$validator->errors()->add('repeat', 'The repeat field is required when start and end are present.');
}
});
}
}