Laravel 布尔值表单验证存在的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php

namespace App\Http\Requests;

class PageRequest extends BaseFormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize(): bool
{
return true;
}

/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules(): array
{
return [
'is_published' => 'requied|boolean'
]
}
}
1
2
3
4

return [
'is_published' => 'in: true, false' // 这是一种解决方法
]

问题在于当表单提交 is_published = 'true',Laravel 会抛出异常 The is published field must be true or false。为什么呢?这大概是类型转换的锅。

参考: