Laravel 5.7 验证规则
Laravel 5.7 Validation Rules
当我提交表单时,这就是我验证字段的方式...
<?php
$this->validate($request, [
'name' => __('required|max:255|unique:templates,name,NULL,id,company_id,:company_id', [
'company_id' => $request->input('companies')
]),
'modules' => 'required|numeric',
'companies' => 'required|numeric',
'start_date' => 'required_with:limited_availability|date|before:end_date',
'end_date' => 'required_with:limited_availability|date|after:start_date',
'indesign_location' => __('required|file|mimetypes:application/zip|max::max_upload_size', [
'max_upload_size' => config('file.max_size')
])
]);
我想达到的目标:
字段 start_date
和 end_date
只应在字段 limited_availability
存在时才需要(因此被验证)。
现在发生了什么: 我没有收到该字段是必填项的消息,但我在两个日期字段上都收到一条错误消息,指出指定的日期无效。
limited_availability
是一个复选框,start_date
和 end_date
都是日期输入字段。
我该如何解决这个问题?
您可以使用这些验证规则中的任何一个来实现。输入逗号,它会将其视为第二个参数。
'start_date' => 'required_if:limited_availability,'
'end_date' => 'required_if:limited_availability,'
or
'start_date' => 'required_without:limited_availability,'
'end_date' => 'required_without:limited_availability,'
可能这是一个幼稚的解决方案。但我很确定这会奏效。
// First thing we separate the validation rule and save it in a variable
$rules = [
'name' => __( 'required|max:255|unique:templates,name,NULL,id,company_id,:company_id', [
'company_id' => $request->input( 'companies' )
] ),
'modules' => 'required|numeric',
'companies' => 'required|numeric',
'indesign_location' => __( 'required|file|mimetypes:application/zip|max::max_upload_size', [
'max_upload_size' => config( 'file.max_size' )
] )
];
// the solution is here
if ($request->has('limited_availability')) {
$rules['start_date'] = 'required|date|before:end_date';
$rules['end_date'] = 'require|date|after:start_date';
}
$this->validate( $request, $rules);
希望对您有所帮助。
当我提交表单时,这就是我验证字段的方式...
<?php
$this->validate($request, [
'name' => __('required|max:255|unique:templates,name,NULL,id,company_id,:company_id', [
'company_id' => $request->input('companies')
]),
'modules' => 'required|numeric',
'companies' => 'required|numeric',
'start_date' => 'required_with:limited_availability|date|before:end_date',
'end_date' => 'required_with:limited_availability|date|after:start_date',
'indesign_location' => __('required|file|mimetypes:application/zip|max::max_upload_size', [
'max_upload_size' => config('file.max_size')
])
]);
我想达到的目标:
字段 start_date
和 end_date
只应在字段 limited_availability
存在时才需要(因此被验证)。
现在发生了什么: 我没有收到该字段是必填项的消息,但我在两个日期字段上都收到一条错误消息,指出指定的日期无效。
limited_availability
是一个复选框,start_date
和 end_date
都是日期输入字段。
我该如何解决这个问题?
您可以使用这些验证规则中的任何一个来实现。输入逗号,它会将其视为第二个参数。
'start_date' => 'required_if:limited_availability,'
'end_date' => 'required_if:limited_availability,'
or
'start_date' => 'required_without:limited_availability,'
'end_date' => 'required_without:limited_availability,'
可能这是一个幼稚的解决方案。但我很确定这会奏效。
// First thing we separate the validation rule and save it in a variable
$rules = [
'name' => __( 'required|max:255|unique:templates,name,NULL,id,company_id,:company_id', [
'company_id' => $request->input( 'companies' )
] ),
'modules' => 'required|numeric',
'companies' => 'required|numeric',
'indesign_location' => __( 'required|file|mimetypes:application/zip|max::max_upload_size', [
'max_upload_size' => config( 'file.max_size' )
] )
];
// the solution is here
if ($request->has('limited_availability')) {
$rules['start_date'] = 'required|date|before:end_date';
$rules['end_date'] = 'require|date|after:start_date';
}
$this->validate( $request, $rules);
希望对您有所帮助。