本文目录导读:

在 Laravel 中,布尔验证(boolean validation)默认不严格,但可以通过一些配置或自定义验证实现严格检查。
默认行为(不严格)
Laravel 的 boolean 验证规则接受的值为:
- 真实值:
true、"true"、"1"、1、"on"、"yes" - 虚假值:
false、"false"、"0"、0、"off"、"no"
// 这些都是有效的布尔值验证
$request->validate([
'active' => 'boolean',
]);
如何实现严格验证
自定义验证规则
use Illuminate\Support\Facades\Validator;
Validator::extend('strict_boolean', function ($attribute, $value, $parameters, $validator) {
return is_bool($value);
});
// 使用
$request->validate([
'active' => 'strict_boolean',
]);
使用正则表达式
$request->validate([
'active' => ['required', 'regex:/^(true|false)$/i'],
]);
创建自定义表单请求
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StrictBooleanRequest extends FormRequest
{
public function rules()
{
return [
'active' => ['required', function ($attribute, $value, $fail) {
if (!is_bool($value)) {
$fail($attribute.' 必须是严格的布尔值。');
}
}],
];
}
}
使用 Laravel 的 accepted 规则
// 只接受 true, "true", 1, "1", "yes", "on"
$request->validate([
'agreement' => 'accepted',
]);
实际场景建议
- 网页表单:默认不严格通常足够,因为表单提交的值通常是字符串
- API 接口:建议严格验证,确保数据类型正确
- 内部系统:根据具体需求选择
// 推荐的做法:结合转换和验证
$request->validate([
'active' => 'boolean',
]);
// 然后强制转换为布尔值
$data = $request->boolean('active'); // 返回 true 或 false
Laravel 的布尔验证默认不严格,但可以通过自定义规则轻松实现严格验证,根据你的业务场景选择合适的验证方式。