查询参数为状态 它的值可以是 status=draft 或 status=draft,sent&
如何验证状态是草稿、已发送还是已批准?
我正在使用这个规则
'status' => 'nullable|in:draft,approved,declined,sent'
单独验证状态。 我如何验证是否有 2 个状态并且它们都有效?
您可以在
AppServiceProvider
中的 boot()
方法中扩展 Laravel 验证,如下所示
Validator::extend('check_status', function ($attribute, $value, $parameters, $validator) {
$valid_statuses = ['draft', 'approved', 'declined', 'sent'];
$requested_statuses = explode(",", $value);
$array_diff = array_diff($requested_statuses, $valid_statuses);
$validator->addReplacer('check_status', function ($message, $attribute, $rule, $parameters) use ($array_diff) {
return str_replace(':statuses', implode(", ", $array_diff), $message);
});
return empty($array_diff);
}, 'Statuses [:statuses] are not valid');
我添加了一条自定义验证错误消息,它将打印所有无效状态。
在你的控制器中你将添加
'status' => 'nullable|check_status'