我有 2 个字段 status 和 releaseYear 和 productionYear。我必须验证:
$request->
'productionYear' => 'nullable|digits:4',
'releaseYear' => 'required|digits:4|after_or_equal:year_of_production',
'status' =>'required|in:Released,UnReleased',
]);
Run Code Online (Sandbox Code Playgroud)
我如何进行以下验证:如果状态设置为已发布,则生产年份和发布年份不应大于今年。
如果状态设置为未发布,则生产年份自今年起不应超过一年
您可以使用lte
这样的规则:
'productionYear' => 'nullable|digits:4|lte:releaseYear',
'releaseYear' => 'required|digits:4',
Run Code Online (Sandbox Code Playgroud)
请参阅文档。
您可以尝试如下所示的自定义验证。我没有测试过,希望这能给你一个想法。
use Illuminate\Support\Facades\Input;
'status' => 'required|in:Released,UnReleased',
'productionYear' => [
'nullable',
'digits:4',
function($attribute, $value, $fail) {
$status = Input::get('status'); // Retrieve status
if ($status === 'Released' && $value > now()->year) {
return $fail($attribute.' is invalid.');
} elseif ($status === 'UnReleased' && $value > (now()->year + 1)) {
return $fail($attribute.' is invalid.');
}
},
],
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14982 次 |
最近记录: |